之前在一个项目里面是用一个组件来处理的,大概是这样
// 这里权限点是一个array,可以后端直接输出到页面上,用一个全局变量存储,也可以异步获取,放在redux里
let privileges = ['aaa','bbb']
function Auth(props) {
// 实际项目里面,props.privilege 也用了一个数组,这里简化一点
const checked = privileges.indexOf(props.privilege) >= 0
if (checked) return props.children
return <noscript />
}
// 使用的时候
<Auth privilege="aaa" ><div>aaa</div></Auth>
<Auth privilege="ccc" ><div>ccc</div></Auth>
还可以做一个高阶组件
let privileges = ['aaa','bbb']
function authHoc(privilege, Component) {
return function(props) {
const checked = privileges.indexOf(privilege) >= 0
if (checked) return <Component {...props} />
return <div>没有访问权限</div>
}
}
需要验证权限的组件
function AAA(props) { ... }
export default authHoc('aaa', AAA)