npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rc-permission

v0.0.17

Published

permission component for react

Readme

权限组件

前言

在大型网站中,不管是前台还是后台都涉及到用户权限,不同权限用户页面显示不一样,目前在React中通常的做法是需要权限控制的组件,每个组件一个固定的Id,Id命名规范可随意(建议层级化),在页面初始化或者服务端渲染时调用接口获取权限列表,该列表是banedList,是所有无权限组件ID集合,代码中根据匹配权限列表结果来控制显示结果。此种方法略显复杂,不够通用,且在权限表特别大时ID会出现很多冗余字符串,增加了网络开销,并且ID设计太过扁平化,不能更好的控制组件的显示方式,例如是控制disable还是visible或者display.

设计

  • 权限数据:json化(支持多种显示方式,便于扩展)
{
  "pageName1": {
      "container1": {
          "component1": {
              "action1": true
          },
      },
      "container2": true
  },
  "pageName2": true,
  "pageName3": {
    "action1": {
        "prop": "visibility",
        "style": {}
    }
  }
}

Interface:

    type IPermissionControlProps = {
        prop?:"visibility"|"disable"|"display";
        style?:React.CSSProperties;
    }
    type IPermissionChildren = {
        [K in Exclude<string,"prop"|"style">]?: IPermissionJSON
    }
    type IPermissionJSON = true|(IPermissionControlProps&IPermissionChildren);

使用

在需要进行权限控制的组件上Wrap一个Permission组件,配置其pId,并将权限JSON传递给PermissionProvider,同时可以设置pid是层级模式还是扁平模式