React Native导航传参报Objects are not valid as a React child错误如何解决
报错原因
Objects are not valid as a React child报错是因为你跳转时传递的参数是完整的国家对象,而不是字符串,下级页面的<Text>组件无法直接渲染JS对象。
你代码里的具体问题:你已经通过getCountry方法提取到了国家名字符串存入countrySelect变量,但调用navigation.navigate时传递的还是onSelect回调返回的完整country对象,不是提取后的名称值。
解决方案
- 方案1:跳转时传递提取后的国家名字符串
修改Covid.js中onSelect回调里的跳转代码:
// 原错误代码 props.navigation.navigate('CovidCountryData', { selectedCountry: country}) // 修改为 props.navigation.navigate('CovidCountryData', { selectedCountry: countrySelect})
注意:
setCountry是异步更新方法,调用后不能立刻拿到最新的country状态值,所以直接用已经计算好的countrySelect变量传参更稳妥。
- 方案2:保留传递完整对象,下级页面提取
name字段渲染
如果你后续在CovidCountryData页面还需要用到国家的其他字段(比如国家编码、区号等),可以保持传完整对象,修改CovidCountryData.js的渲染逻辑:
// 原错误代码 <Text>{Country}</Text> // 修改为 <Text>{Country.name}</Text>
内容的提问来源于stack exchange,提问作者Abdi406
相关产品推荐
相关产品推荐

