React Native首次调用栈导航时传递空数组问题求助
问题原因
React 的 setState(包括 useState 的更新函数)是异步执行的。你调用 setdata 后,当前作用域里的 data 并不会立刻更新为新值——首次点击时 data 还是初始的空数组,所以传给 Home 页面的就是空数组。
解决方案
直接使用你刚构造的新数组,同时用于更新 state 和传递导航参数,不用依赖异步更新后的 state:
const showdata = ()=> { // 先构造新的数组 const newData = [...data, { user: username, email: email, password: password, }]; // 更新state setdata(newData); // 直接传递新数组 navigation.navigate('home', { showdata: newData, }); };
这样不管是首次还是后续点击,传递给 Home 的都是最新的包含新数据的数组,能立刻完成渲染。
额外修复
你的 Home 组件代码里有语法错误:renderItem 的返回值里多了多余的 your text,会导致渲染失败,需要删掉:
// 修正后的 renderItem 返回内容 return ( <View style={{margin:20}}> <Text>UserName: {item.user}</Text> <Text>Email: {item.email}</Text> <Text>password: {item.password}</Text> </View> )
内容的提问来源于stack exchange,提问作者Ahmed Ali Soomro
相关产品推荐
相关产品推荐

