javascript - 如何从react中的渲染函数返回一个空的jsx元素?

标签 javascript reactjs react-native jsx

我在react中有一个代码看起来像这样:

class UserManagement extends React.Component {
    constructor() {
        super();
        this.state = {
            users: undefined,
        };
    }

    componentWillMount() {
        // load the users state with a Promise
        setTimeout(() => {
          this.setState({users: []});
        }, 800);
    }

    render() {
        if ( this.state.users === undefined ) {
            // until the users state is updated, I want to return an empty element
            return null;
        }

        // real site rendering
        return <div>We have users</div>;
    }
}

ReactDOM.render(
  <UserManagement />,
  document.getElementById("root")
);
<div>Will be blank at first while we don't have users, then show "We have users" after 800ms when we have users</div>
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>

我的问题是:如何返回空元素,直到返回用户状态?我试图返回(null)按照某些地方的建议,但浏览器会引发此错误:

Uncaught TypeError: Cannot read property 'style' of null

我知道可以选择返回 (<div></div>) ,但我不确定这是否是本例中的最佳实践。

谢谢!

最佳答案

以防万一有人想要另一种方法:

从 React v16.2 开始,您可以使用 Fragments允许添加一个空的 JSX 标签,如下所示:

  return (
    <>
      <ChildA />
      <ChildB />
      <ChildC />
    </>
  );

示例摘自官方文档。

因此,就您而言,返回没有任何子项的片段是可行的。

  return <></>;

关于javascript - 如何从react中的渲染函数返回一个空的jsx元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45322255/

相关文章:

javascript - 使用 ES6 模块导出/导入单类方法?

javascript - 调试时如何按 z-index 对页面元素进行排序?

javascript switch() 或 if()

javascript - 如何在 MobX 中将装饰器 @action 转换为非装饰器 Action

react-native - React Native - 按下按钮时将元素动态添加到 DOM

javascript - 引用 DOM 元素作为 window 对象的属性

ReactJS 应用程序 - 弹性 VS 快速失败

javascript - 父子之间使用 row ReactJs 进行通信

json - 当我执行 npm install 时,Git Clone 的权限被拒绝

react-native - 更新由 : RNSVGPath 管理的 View 的属性 'd' 时出错