javascript - 根据用户权限渲染 react 组件

标签 javascript reactjs

我需要根据用户 Angular 色呈现一个组件。

例如: 如果用户是销售人员,他会看到两个按钮。 但如果他支持,他只会看到第二个按钮。

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 语句。尽可能保持清洁。

是否有好的设计或一些工具/装饰器可以在这里派上用场?

我已经在服务器端处理了它,但我也需要一个干净的客户端解决方案。

谢谢。

最佳答案

您可以将三元语句直接内联到您的组件树中,如下所示。如果这些 bool 表达式的计算结果为 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>
    )
  }
}

为此,您需要在 props 中获得有关用户 Angular 色的信息。

React documentation 中阅读更多关于条件渲染的信息.

关于javascript - 根据用户权限渲染 react 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53113659/

相关文章:

reactjs - [类型错误 : undefined is not an object (evaluating 'iter[Symbol.iterator]' )] react-native

javascript - React 中的表单提交

javascript - MUI 属性 'palette' 在类型 'Theme' 上不存在

reactjs - 开 Jest 如何用全局变量覆盖所有分支

javascript - 如何使用 javascript 更改 .css 优先级

javascript - Flask bootstrap 中的 scrollspy 不起作用(Jinja2)

javascript - 选择 select bootstrap 在 bootstrap 模式中显示两次

Javascript "🚀".charCodeAt(0) 停留在 55357?

javascript - fullcalendar - 以dayGridWeek显示时间

node.js - 无法从 react-script 卸载 webpack