React Native中如何正确嵌套两次三元运算符实现条件渲染
问题根因
代码无法正常运行是JSX语法和三元运算符结构写错了:
- 三元运算符的语法结构是
条件 ? 真值返回值 : 假值返回值,你在真值返回值的位置放了两个平级JSX节点、裸写注释、额外嵌套独立花括号,直接破坏了三元表达式的结构,JS解析器无法识别 - JSX中单个表达式位置不能直接返回多个平级DOM节点,必须包裹在同一个父容器下
- 你的业务逻辑是updateFlag为true时a组件常驻,feedboolean同时为真时追加展示b组件,二者不是互斥关系,不需要在a、b之间做二选一的三元判断
可直接运行的修复代码
<View> <CusText /> {updateFlag ? ( <View> {/* a组件:updateFlag为true时常驻展示 */} <View> <ArrowIconPickersecond /> </View> {/* b组件:双条件同时满足才展示 */} {feedboolean && ( <View> <TextInput /> </View> )} </View> ) : ( <CusText /> )} </View>
写法说明
- 第一层三元只判断updateFlag状态:为真时渲染包裹a、b组件的父容器,为假时渲染兜底的CusText
- b组件用
&&短路运算符做条件渲染,天然满足「两个状态同时为true才展示」的要求,不需要写冗余的三元null分支 - JSX中的注释必须包裹在
{/* 注释内容 */}格式里,不能直接在节点间隙裸写//注释,避免触发解析错误 - 同个条件分支下的多个平级节点统一放在一个父View下,符合JSX的语法要求
内容的提问来源于stack exchange,提问作者user15322469
相关产品推荐
相关产品推荐

