美文网首页
React开发——权限组件开发

React开发——权限组件开发

作者: 泰然自若_750f | 来源:发表于2020-03-16 14:00 被阅读0次
image.png

React 开发中中经常根据角色配置菜单和权限按钮情况,为了开发的便捷,封装一个组件,根据权限动态显示。
主要实现功能:
1:根据配置如果没有权限可自由选择是隐藏还是禁用(useDisabled)
2:权限编码code 属性定义在组件上,则是对组件内部的子组件实现权限的控制。如果定义在子组件上,就实现子组件的权限控制。
我在项目中使用Mobx作为全局状态管理,存储用户权限。
组件的代码实现

import React from 'react';
import { inject, observer } from 'mobx-react';
import PropTypes from 'prop-types';
@inject('app')
@observer
class Permission extends React.Component {
    static propTypes = {
        code: PropTypes.string, //权限码值
        useDisabled: PropTypes.bool,// true 为禁用 false 为没有权限时不显示
    };

    static defaultProps = {
        useDisabled: false,
    };
    //校验权限
    hasPermission=(code)=>{
        // console.log(this.props.app.permissions.USER_ADD)
     
        return this.props.app.permissions[code]?true:false;
    }
    render() {
        
        let {useDisabled,code,children}=this.props;
          //code存在值 分为两种情况 
          //1:在外围组件上,而且还是直接隐藏
        if(code && !useDisabled){
            return this.hasPermission(code)?children:null;
            
        }
        children=Array.isArray(children)?children:[children];
        return children.map((item,index)=>{
                 
                  const {key='key'+index}=item;
                 
                  //不管是code在内部还是外部,此时统一处理
                  code=code?code:item.code;
                 
                  if(code && useDisabled)
                  {
                    return React.cloneElement(
                        item,
                        {
                            disabled: !this.hasPermission(code),
                            key,
                           
                        }
                    );
                  }

                  else if(code){
                    return this.hasPermission(code)? React.cloneElement(
                        item,
                        {  
                            key,
                        
                        }
                      ):null
                     
                  }
                  else {
                      return item;
                  }
            })
        
    }

}
export default Permission;

权限存储

import {
    observable,
    action,
    computed
} from 'mobx';

class App{
      @observable.ref permissions={
           'USER_ADD':true,
           'USER_DELETE':false,
      };

}

export default new App();

相关文章

  • React开发——权限组件开发

    React 开发中中经常根据角色配置菜单和权限按钮情况,为了开发的便捷,封装一个组件,根据权限动态显示。主要实现功...

  • NT 技术周刊-1028

    React-Native 组件开发方法[原创] 摘要 �React Native的开发思路是通过组合各种组件来组织...

  • 如何开发vue、react、angular的组件库教程

    关键词:vue,react,angular,开发,封装,ui组件,组件库,常用组件 目标:开发相应的组件库vue-...

  • react脚本架工具

    前端使用React.js+webpack进行组件化开发越来流行了.想使用react.js进行组件化开发,但又不想学...

  • React Native常用组件之ScrollView

    配置React Native的开发环境 React Native常用组件之ScrollView React Nat...

  • React相关内容

    一、react开发环境的熟悉 二、在react开发环境下,结合antd-mobile以及antd-design组件...

  • (1)React的开发

    1、React项目架构搭建2、JSX语法3、React组件化开发4、React组件间通信5、React中的事件6、...

  • React Native开发中常用三方组件库大全

    React Native开发中常用三方组件大全 作者整理的一套常用的React Native开发中使用到的三方组件...

  • 《图解React》- 第五节 组件

    组件 组件是React的核心概念,是React应用程序的基石。组件是React开发的一个最小单元,利用“分而治之”...

  • react组件间通信

    React 开发模式是组件化开发, 所以组件间的信息传递就尤为重要,React传递数据的方式主要有3种。 prop...

网友评论

      本文标题:React开发——权限组件开发

      本文链接:https://www.haomeiwen.com/subject/expfzctx.html