【问题标题】:How to handle permission check in React app (State maintain in Redux)?如何处理 React 应用程序中的权限检查(Redux 中的状态维护)?
【发布时间】:2016-04-05 12:40:14
【问题描述】:

如何在 React 中处理权限检查? 我尝试了两种方式。有没有更好的方法来处理权限检查或者哪一种最好用?

类型 1
通过上下文传递权限。如果权限满足返回组件或为null,则权限组件从上下文中获取权限

class HomePage extends React.Component{
  getChildContext(){
   return {permission:this.props.permission}
  }
   render(){
     return <div>
       <Permission check='Edit'>
         <PopupMenu> 
           <div>Edit</div>
         </PopupMenu>
       </Permission>
       <Permission check='Delete'>
         <PopupMenu> 
            <div>Delete</div>
         </PopupMenu>
       </Permission>
   </div>
  }
}
HomePage.childContextType={permission:...}
class Permission extends React.Component{
    render(){
       if(this.context.permissions.indexOf(this.props.check)!=-1)
         return this.props.children
       else
         return null;
    }
}

类型 2
在mapStateToProps函数中查看权限,根据权限返回props

class HomePage extends React.Component{
    render(){
    return <div>
       <PopupMenu> 
          <div>{this.props.operation}</div>
       </PopupMenu>
    </div>
    }
  }
function mapStateToProps(state){
   var operation="";
   if(state.permission=="Edit"){
      operation="Edit"
   }
   else if(state.permission=="Delete"){
      operation="Delete"
   }
   return {operation}
}
connect(mapStateToProps)(HomePage)

【问题讨论】:

    标签: javascript reactjs redux react-redux


    【解决方案1】:

    任何一种解决方案都可以。请注意,第二个解决方案提供了不同级别的访问权限,而第一个解决方案是“全有或全无”。因此,这仅取决于您的需求和编码风格偏好。

    【讨论】:

    • 谢谢。还有什么办法吗?示例
    猜你喜欢
    • 2016-10-25
    • 1970-01-01
    • 2017-09-13
    • 2019-07-12
    • 2018-08-02
    • 1970-01-01
    • 2016-07-14
    • 2020-12-26
    • 1970-01-01
    相关资源
    最近更新 更多