一段时间以来,我一直在对状态的浅表副本(即React中的数组)进行调整,然后像这样设置状态。
...
this.state = {
"exampleArr": [1]
}
...
someFunction(){
let copyArr = this.state.exampleArr;
copyArr.push(2);
this.setState({
"exampleArr": copyArr
});
}
我知道在React文档中,他们说将状态视为不可变,并且仅使用setState()对其进行更改。有一阵子,我认为我的做法是正确的,因为它行之有效,没有任何问题。但是,最近我想到,我所做的就是制作状态的浅表副本,并调整该浅表副本,从技术上讲,它也会影响原始状态。
我在做错/危险吗?例如,我是否应该在每次需要调整数组时对其进行深拷贝,例如:
...
someFunction(){
let copyArr = this.state.exampleArr.map(x => x);
copyArr.push(2);
this.setState({
"exampleArr": copyArr
});
}
或者对于数组的React状态真的不重要吗?
答案 0 :(得分:1)
对于此示例,这实际上不是问题,您可能希望对复杂的对象更加具体,而不是简单的数组:)
只要它能正常工作:P您可以阅读一些有关堆栈主题的讨论以及查看文档,大多数讨论都涉及更实质的状态: