javascript - 根据用户权限渲染 React 组件
问题描述
我需要根据用户角色渲染一个组件。
例如:如果用户是销售人员,他会看到两个按钮。但如果他是支持者,他只会看到第二个按钮。
import React from 'react';
import Button from './MyCustomButton';
class App extends React.PureComponent {
render() {
return (
<Grid>
<Button> // visible only for sales manager
Action A
</Button>
<Button> // visible for support and sales manager
Action B
</Button>
</Grid>
)
}
}
我真的很想避免在渲染中使用 if-else 语句。尽可能保持清洁。
是否有一个好的设计或一些工具/装饰器可以在这里有用?
我已经在服务器端处理了它,但我也需要一个干净的客户端解决方案。
谢谢。
解决方案
您可以将三元语句直接内联到组件树中,如下所示。如果这些布尔表达式的计算结果为false
,react 将自动跳过它们。
class App extends React.PureComponent {
render() {
const user = this.props.user;
return (
<Grid>
{user.isSalesManager && <Button>
Action A
</Button>}
{(user.isSalesManager || user.isSupport) && <Button>
Action B
</Button>}
</Grid>
)
}
}
为了做到这一点,您需要在道具中获得有关用户角色的信息。
在React 文档中阅读更多关于条件渲染的内容。
推荐阅读
- python - Pandas dataframe yielding float and no float at the same time
- vb.net - 如何执行在文本框中输入的 VB 代码
- java - ShEx 验证 - 结果形状图中的原因和 appInfo 为空
- laravel - 如何创建 Laravel api 路由端点/查询参数?
- matplotlib - 用名称替换 xticks
- swift - 如何在 Swift 中使用相等的 i+=2 for 循环?
- python - Python Selenium 关注某个浏览器实例
- pdf - 来自服务的 Windows PDF 打印机
- magnolia - 为什么 jsonfn.expand 包含空值?
- rxjs - Observable.fromEvent(this.handle, 'mousedown'); (仅限左键)