使用传播或解构获取反应状态对象

问题描述

似乎有一个更好的理由是扩散而不是破坏,但是我不明白为什么。当然,在编写/读取代码时,结构分解要容易得多,代码更少,但是某些教程似乎更喜欢传播,但在这些示例中,它们似乎并没有从状态中提取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创建浅表副本。解构会创建一个引用,该引用会导致状态直接发生突变。从状态拉回到状态时,请始终使用传播。仅用于从状态读取时,解构很好。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...