reactjs React Hook setData未正确更新

dojqjjoe  于 2023-02-03  发布在  React
关注(0)|答案(1)|浏览(147)

因此,我的setData如下所示:

type Data = {
      tempId: string,
      ...
    };

const [data: Data, setData: Data] = useState(() => {
    const data: Data = {
    };

    for (const [key, value] of formData) {
      if (key !== 'tempId') {
        data[key] = value;
      }
    }

    return data;
  });

然后我打电话给

setData({tempId: 'some_id', ...data});

然而,tempId显示为从未设置过,并且为null。我不知道为什么会发生这种情况-有什么想法吗?

o7jaxewo

o7jaxewo1#

useState接受一个初始值,在你的例子中是data的值。你传递的函数不会像你想象的那样运行。你可能会寻找类似这样的东西:

const [data, setData] = useState();

const updateData = (formData) => {
  let data = {}

  for (const [key, value] of formData) {
    if (key !== 'tempId') {
      data[key] = value;
    }
  }

  setData(data)
}

然后,您将调用updateData({tempId: 'some_id', ...data});而不是setData({tempId: 'some_id', ...data});

相关问题