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

我try 过各种不同的方法,但我无法让它发挥作用.

我在找

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>
  );
}

Update

我最终 Select 了解决方案,将其移动到renderContent并调用该函数.不过,这两个答案都有效.我想我可以使用内联解决方案,如果它用于简单的渲染,而对于更复杂的情况,则使用renderContent.

非常感谢.

推荐答案

你需要把标题和正文包装在一个容器里.这可能是一个div.如果改用fragment,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.因此,如果"布尔值"可能是falsy Number,那么使用(someBoolean ? "stuff" : null)更安全.

Reactjs相关问答推荐

为什么这个'Suspense'子组件在挂起promise解决后会丢失它的状态,而不是呈现?<>

替换谷歌 map api默认信息窗口与自定义

使用Overpass API Endpoint计算 map 上的面积

不同步渲染

for each 子级加载父路由加载器

获取更改后的状态值

在Reaction中管理多个状态

子路径上未定义useMatches句柄

当useEffect和onClick处理程序都调用useCallback函数时,有没有办法对useEffect产生额外的影响?

无法使用Reaction日期选取器和Next.js设置初始日期

REACTION-Easy-SORT返回.map错误

在ReactJS的monaco编辑器中添加美人鱼语法

当`useSelector`回调中的属性值更新时,将会使用更新后的值吗?

将外部 JavaScript 导入 React(通过文件)

部署到github pages时请求路径错误

我应该使用 useEffect 来为 React Native Reanimated 的 prop 值变化设置动画吗?

getAttribute 函数并不总是检索属性值

加密 Django Rest Framework API 响应 + 解密响应应用程序中的响应

单击三个按钮之一后如何显示特定按钮的内容?单击其中一个按钮后应隐藏所有按钮

react / firebase 基地.如何在我的项目中保存更新的数据?