javascript – React / Redux应用程序中组件的权限检查
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – React / Redux应用程序中组件的权限检查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2936字,纯文字阅读大概需要5分钟。
内容图文
![javascript – React / Redux应用程序中组件的权限检查](/upload/InfoBanner/zyjiaocheng/819/bc67ba942c35469b96b9981295fef210.jpg)
我正在尝试与一个构建React应用程序的团队合作,并试图找出创建“更高阶”React组件(一个包装另一个组件)的最佳方法,以便与Redux数据存储一起执行身份验证.
到目前为止,我的方法是创建一个模块,该模块由一个函数组成,该函数根据是否有经过身份验证的用户返回一个新的React组件.
export default function auth(Component) {
class Authenticated extends React.Component {
// conditional logic
render(){
const isAuth = this.props.isAuthenticated;
return (
<div>
{isAuth ? <Component {...this.props} /> : null}
</div>
)
}
}
...
return connect(mapStateToProps)(Authenticated);
}
这使我的团队中的其他人可以轻松指定组件是否需要特定权限.
render() {
return auth(<MyComponent />);
}
如果您正在执行基于角色的检查,这种方法是有道理的,因为您可能只有几个角色.在这种情况下,您可以调用auth(< MyComponent />,admin).
对于基于权限的检查,传递参数变得难以处理.但是,在构建组件时(以及在团队环境中可管理),可以在组件级别指定权限.设置静态方法/属性似乎是一个不错的解决方案,但据我所知,es6类导出为函数,它们不会显示可调用方法.
有没有办法访问导出的React组件的属性/方法,以便可以从包含组件访问它们?
解决方法:
onEnter很棒,在某些情况下很有用.但是,以下是一些常见的身份验证和授权问题onEnter无法解决:
>决定redux商店数据的认证/授权(there are
some workarounds)
>如果商店更新,则重新检查身份验证/授权(但不是
目前的路线)
>如果子路由发生更改,请重新检查身份验证/授权
在受保护的路线下面
另一种方法是使用高阶组件.
您可以使用Redux-auth-wrapper提供更高阶的组件,以便于阅读和应用组件的身份验证和授权约束.
>要获取子方法,您可以使用:引用,回调和来自refs的回调
>要获取子道具,您可以使用:this.refs.child.props.some或compInstance.props.some
方法和道具的示例:
class Parent extends Component {
constructor(props){
super(props);
this.checkChildMethod=this.checkChildMethod.bind(this);
this.checkChildMethod2=this.checkChildMethod2.bind(this);
this.checkChildMethod3=this.checkChildMethod3.bind(this);
}
checkChildMethod(){
this.refs.child.someMethod();
console.log(this.refs.child.props.test);
}
checkChildMethod2(){
this._child2.someMethod();
console.log(this._child2.props.test);
}
checkChildMethod3(){
this._child3.someMethod();
console.log(this._child3.props.test);
}
render(){
return (
<div>
Parent
<Child ref="child" test={"prop of child"}/>
<ChildTwo ref={c=>this._child2=c} test={"prop of child2"}/>
<ChildThree returnComp={c=>this._child3=c} test={"prop of child3"}/>
<input type="button" value="Check method of child" onClick={this.checkChildMethod}/>
<input type="button" value="Check method of childTwo" onClick={this.checkChildMethod2}/>
<input type="button" value="Check method of childThree" onClick={this.checkChildMethod3}/>
</div>
);
}
}
class Child extends Component {
someMethod(){
console.log('someMethod Child');
}
render(){
return (<div>Child</div>);
}
}
class ChildTwo extends Component {
someMethod(){
console.log('someMethod from ChildTwo');
}
render(){
return (<div>Child</div>);
}
}
class ChildThree extends Component {
componentDidMount(){
this.props.returnComp(this);
}
someMethod(){
console.log('someMethod from ChildThree');
}
render(){
return (<div>Child</div>);
}
}
内容总结
以上是互联网集市为您收集整理的javascript – React / Redux应用程序中组件的权限检查全部内容,希望文章能够帮你解决javascript – React / Redux应用程序中组件的权限检查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。