繁体   English   中英

反应中的 setState

[英]setState in react

我有一个 api 来返回嵌套对象的结果。 初始状态如下图所示:

const [obj, setObj] = useState({
     name: null,
     age: null,
     address: {
         city: null,
         zipCode: null
     }
})

一旦 api 被调用并返回包含所有属性的结果,我们将调用 setObj。 我们需要像setObj({...obj, results})调用还是可以直接调用setObj(results)

根据我的理解,状态在反应中是不可变的,我们不能直接修改它。 如果我错了,请纠正我。 我发现一个类似的问题是为什么我不能直接修改组件的状态,真的吗?

提前致谢。

如果 API 返回的对象只包含现有属性的一个子集,例如

{
  name: 'foo'
}

那么您需要将现有对象传播到新状态以保留旧的null属性。

setObj({ ...obj, ...results });

如果需要,您还需要考虑深度克隆address - 请记住,传播只会创建浅拷贝,而不是深拷贝。

如果 API 返回的对象包含所有属性,那么您不需要关心前一个带有null的对象中的任何内容,因此您只需要

setObj(results);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM