0

每当邀请 [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

4

1 回答 1

0

我猜你有类似的东西

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

在组件的顶部。这意味着在第一次 useEffect 运行invitation[1][1]时将为空。在第二次运行时,它将有一个值。这在 React Native 中是不洁的。当您调用最终参数时,每次组件呈现时都useEffect必须具有相同的类型。

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

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

useEffect(() => {
    getUserId();
  }, invitation);
于 2020-03-22T22:22:40.493 回答