react的useState没生效

组件中有如下代码.data是传到组件的数据,formData是新建的变量

  console.log("data", data);
  const [formData, setFormData] = useState(data);
  console.log("formData", formData);

第一次调用组件是正常的,data和formData是同一个数据
后面不管怎么再调用组件,formData都是第一次调用组件时的data数据,不会更新,是为什么

data 需要 拷贝一下 。因为是 对象 。

该回答内容部分引用GPT,GPT_Pro更好的解决问题
这个问题是因为react的 useState 使用的是浅比较,当你初始化的时候,formData和data指向的是同一个引用,之后你再更新data,因为比较结果仍然相同(只有比较引用地址),所以useState就不会去触发更新。

要解决这个问题最简单的办法就是在初始化的时候对data进行一次深拷贝:

// 初始化formData
const [formpata, setFormData] = useState(JSON.parse(JSON.stringify(data)));

这样就能保证formData和data是两个独立的引用了,之后再更新data也不会影响到formData。
如果回答有帮助,望采纳。