当二维数组中的元素在react native expo中发生更改时,重新呈现页面



每当邀请[1][1]中的值发生变化时,我想重新运行下面的代码来重新加载页面,我在另一个页面中使用AsyncStorage更新这些数组值,当我尝试以下操作时,我得到了下面的错误。还有别的办法吗?

const [invitation, setInvitation] = React.useState(Array.from({length: 2},()=> Array.from({length: 2})));
React.useEffect(()=>
{
getUserId();
},invitation[1][1]);
async function getUserId() {
var keys = ["invitationFromURL","Alert"]
try {
await AsyncStorage.multiGet(keys , (err, item) => 
{
setInvitation(item);
});
} catch (error) {
// Error retrieving data
console.log(error.message);
}
}  

console.log(invitation);
console.log(invitation[1][1]);

我得到的错误警告:%s在此渲染过程中收到了最终参数,但在上一次渲染过程中没有收到。即使最后一个参数是可选的,其类型也不能在渲染之间更改。%s、 useEffect

我猜你有类似的东西

const [invitation, setInvitation] = useState([[], []]);

位于组件顶部。这意味着在第一次useEffect运行时,invitation[1][1]将为null。第二次运行时,它将有一个值。这不是React Native中的犹太洁食。调用useEffect时,每次组件渲染时,最终参数必须具有相同的类型

应该是一个简单的修复——而不是

useEffect(() => {
getUserId();
}, invitation[1][1]);

进行

useEffect(() => {
getUserId();
}, invitation);

最新更新