javascript - 如何在 ReactJS JSX 中执行嵌套的 if else 语句?

标签 javascript reactjs ecmascript-6 jsx

我想知道是否可以在 ReactJS JSX 中嵌套 if else if?

我尝试了各种不同的方法,但我无法让它工作。

我在找

if (x) {
  loading screen
} else {
  if (y) {
    possible title if we need it
  }
  main 
}

我已经试过了,但无法渲染。我尝试了各种方法。一旦我添加嵌套的 if,它总是会中断。

{
  this.state.loadingPage ? (
    <div>loading page</div>
  ) : (
    <div>
      this.otherCondition && <div>title</div>
      <div>body</div>
    </div>
  );
}

更新

我最终选择了将其移动到 renderContent 并调用该函数的解决方案。这两个答案确实有效。我想我可能会使用内联解决方案,如果它用于简单的渲染,而 renderContent 用于更复杂的情况。

谢谢

最佳答案

您需要将标题和正文包装在一个容器中。那可能是一个股利。如果您改用片段,您将在 dom 中少一个元素。

{ this.state.loadingPage
  ? <span className="sr-only">Loading... Registered Devices</span>
  : <>
      {this.state.someBoolean
        ? <div>some title</div>
        : null
      }
      <div>body</div>
    </>
}

我建议不要嵌套三元语句,因为它很难阅读。有时“早点返回”比使用三元组更优雅。此外,如果您只想要三元的真实部分,则可以使用 isBool && component

renderContent() {
  if (this.state.loadingPage) {
    return <span className="sr-only">Loading... Registered Devices</span>;
  }

  return (
    <>
      {this.state.someBoolean && <div>some title</div>}
      <div>body</div>
    </>
  );
}

render() {
  return <div className="outer-wrapper">{ this.renderContent() }</div>;
}

注意语法 someBoolean && "stuff":如果错误地将 someBoolean 设置为 0NaN,该数字将呈现给 DOM。因此,如果“ bool 值”可能是一个虚假数字,使用(someBoolean ? "stuff": null)会更安全。

关于javascript - 如何在 ReactJS JSX 中执行嵌套的 if else 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312122/

相关文章:

javascript - Typescript 中的 Json 形成(Angular 7)

javascript - 无法理解 ECMA6 中 WeakMap 的行为

javascript - 在同一个项目中混合 CommonJS 和 ES6 模块

javascript - 在执行任何绑定(bind)回调之前修改 ajax 响应

javascript - mouseclick 和 mousemove 事件在 react Canvas 中给出偏移错误

asp.net - 不使用 AJAX 加载图像

javascript - react : How can i access a attribute within a <td> tag

javascript - 使用 Ajax 和 Jquery 加载内容

javascript - Jest 遇到意外 token : SyntaxError: Unexpected Token {

reactjs - 使用异步 redux-thunk 操作进行存储更改 typescript 的功能测试