【发布时间】:2021-07-29 14:29:45
【问题描述】:
不确定如何将以下嵌套 if/else 编写为 React 应用程序中的嵌套三元组,即
if (jobId === 1) {
if (activeFlag === 1) {
<RenderA />
} else if (activeFlag === 2) {
<RenderB />
} else if (activeFlag === 3) {
<RenderC />
}
}
我试过了:
{
(jobId === 1) ?
(activeFlag === 1) ? (<RenderA />) : (activeFlag === 2) ? (<RenderB />)
}
不确定我是否走在正确的轨道上?
【问题讨论】:
-
如果有 if else 条件,可以使用三元运算符。从我在这里看到的情况来看,如果 jobId 不是 1 并且类似地,如果 activeFlag 的值不是 1,2,3,则您不会渲染任何内容
-
考虑把这个逻辑放在它自己的函数或组件中,然后返回你要渲染的JSX。然后你可以调用这个函数,或者将它作为一个组件使用
-
你可以创建一个对象字面量:
const map = { 1: RenderA, 2: RenderB, etc },然后像const component = map[activeFlag]一样获取基于activeFlag的组件。如果没有找到,返回null -
当问题被标记为重复时,我正在为我的解决方案编写测试用例,因此我将其发布为as an answer to the "primary" question。 (我并不是说这是在反应中处理渲染的最佳方式,但它回答了您提出的问题,而不是类似的问题。)
标签: javascript reactjs conditional-operator