首页 > 解决方案 > React Hook setData 没有正确更新

问题描述

所以我的 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 显示为从未设置过并且为空。我不知道为什么会发生这种情况-有什么想法吗?

标签: javascriptreactjsreact-hooks

解决方案


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

const [data, setDate] = useState();

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

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

  setData(data)
}

然后,而不是打电话给setData({tempId: 'some_id', ...data});updateData({tempId: 'some_id', ...data});


推荐阅读