React Native随机选下拉值传参至SubScreen2出现undefined问题
React Native 随机菜系值传递问题修复方案
问题根源
- React状态更新函数
setValue无返回值,你将它的调用结果赋值给randomValue,必然得到undefined,导致传递给SubScreen2的参数无效。 - 错误地将数组传递给
setValue,但当前下拉选择器为单选模式,value应为字符串类型而非数组。
修复后的核心代码调整
仅需修改HomeScreen中的setRandomValue函数:
const setRandomValue = () => { const randomIndex = Math.floor(Math.random() * items.length); // 先获取正确的随机菜系值(按需求使用label转小写或直接用item.value) const randomValue = items[randomIndex].label.toLowerCase(); // 给下拉选择器更新状态(传递字符串而非数组) setValue(randomValue); console.log(randomIndex); console.log(randomValue); // 直接传递已获取的正确值,而非setValue的返回值 navigation.navigate("SubScreen2", {paramKey: randomValue}); }
另外注意到items列表中存在拼写错误:{label:'Beverage', value:'Berverage'},建议修正为value:'Beverage',避免后续Firebase查询时出现数据不匹配。
额外说明
- 状态更新是异步操作,不要依赖
setValue执行后的value状态传递参数,直接使用提前获取的randomValue是最可靠的方式。 - 若需将下拉选择器改为多选模式,才需要把
value设为数组类型,此时setValue的参数才是数组,当前场景为单选,使用字符串即可。
内容的提问来源于stack exchange,提问作者L.Calvin
相关产品推荐
相关产品推荐

