问题描述
似乎有一个更好的理由是扩散而不是破坏,但是我不明白为什么。当然,在编写/读取代码时,结构分解要容易得多,代码更少,但是某些教程似乎更喜欢传播,但在这些示例中,它们似乎并没有从状态中提取2个或更多项。似乎很奇怪:
let obj1 = {...this.state.obj1};
let obj2 = {...this.state.obj2};
let obj3 = {...this.state.obj3};
这要干净得多
let {obj1,obj2,obj3} = this.state;
这是假设我打算在获得这些值之后做类似的事情
obj1.foo = "bar";
obj1.baz = "qux";
obj2.foo = "bar";
obj3.foo = "baz";
this.setState({obj1,obj3});
为什么一个比另一个更好,并且如果最好采用传播方式,那么有什么方法可以使代码更简洁?
解决方法
很不幸,我无法在这里得到答案。感谢Reddit,我现在可以回答这个问题。
Spread创建浅表副本。解构会创建一个引用,该引用会导致状态直接发生突变。从状态拉回到状态时,请始终使用传播。仅用于从状态读取时,解构很好。