React Native 中 onValueChange 回调if语句内返回View不生效是什么原因
问题原因解析
你这种写法无法显示View是两个核心原因导致的:
- 事件回调函数的返回值不会被React处理,根本不会进入渲染链路。React组件要渲染的内容只能放在组件的主返回JSX里,
onValueChange是用户交互触发的回调函数,它的返回值没有任何渲染相关的作用,你在里面return的View会被直接忽略。 - 示例代码里的View宽高设置为5000,远超普通设备屏幕尺寸,就算被错误渲染出来也会超出视口范围,无法被观察到。
正确实现方案
你已经声明了selectedValue状态来保存选中值,直接在组件的渲染逻辑里加条件判断即可,修改后的代码逻辑如下:
// 组件内状态声明 const [selectedValue, setSelectedValue] = useState(''); // 组件主渲染逻辑 return ( <View style={{flex:1}}> {/* 你原本的选择器组件,比如Picker */} <Picker selectedValue={selectedValue} onValueChange={(itemValue) => { setSelectedValue(itemValue); if(itemValue == 'other'){ alert('You Choose: '+itemValue+' Nice') } }} > {/* 这里放你的Picker.Item选项 */} </Picker> {/* 新增条件渲染逻辑,选中other时显示对应的View */} {selectedValue === 'other' && ( <View style={{backgroundColor:'red',height:200,width:'100%'}}> <Text>Anas</Text> </View> )} </View> )
内容的提问来源于stack exchange,提问作者Anas Hs
相关产品推荐
相关产品推荐

