React Native报错:Objects are not valid as a React child问题求助
问题解决:React Native报错 "Objects are not valid as a React child (found: object with keys {_h, _i, _j, _k})"
错误原因
你的MeUI组件被定义成了async函数,而React组件不能是异步函数——async函数执行后返回的是Promise对象,React尝试渲染这个Promise对象时,就会抛出该错误(Promise内部包含_h、_i、_j、_k这些内部属性)。
解决方案
直接移除组件定义中的async关键字,你的组件代码里并没有使用await相关的异步操作,完全不需要异步组件:
修改后的MeUI.jsx核心代码:
// 移除async关键字 const MeUI = () => { const dispatch = useDispatch() const { navigate } = useNavigation() return ( <View style={{ flex:1, backgroundColor: 'white' }}> <AvatarSection batch={'BCA 6th Sem | 2020-2023'} name={'Abbas Ali Dalal'} /> <View style={{ position: 'relative', top: 150, alignItems: 'center' }}> <FlatList data={Routes.Me} renderItem={({ item }) => { return <TouchableOpacity onPress={()=> { dispatch(SWITCH_TO_CHILDSTACK()) navigate(item.screen) }}> <Card.DashboardCard iconName={item.iconName} title={item.title} /> </TouchableOpacity> }} // 建议添加keyExtractor,避免列表渲染警告 keyExtractor={(item) => item.screen || item.title} /> </View> </View> ) }
额外提示
- 无需清理Gradle或重置AsyncStorage,该错误与存储无关,完全是组件定义错误导致。
- 给
FlatList添加keyExtractor属性,可帮助React高效渲染列表项,避免不必要的控制台警告。
内容的提问来源于stack exchange,提问作者Abbas Dalal
相关产品推荐
相关产品推荐

