使用传播或解构获取反应状态对象
Posted
技术标签:
【中文标题】使用传播或解构获取反应状态对象【英文标题】:Getting react state objects using spread or destructuring 【发布时间】:2020-12-15 21:19:57 【问题描述】:似乎有一个更可取的理由来传播而不是解构,但我不明白为什么。当然,在编写/阅读代码时,解构更容易且代码更少,但有些教程似乎更喜欢传播,但在这些示例中,它们似乎并没有从状态中提取 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,obj2,obj3);
为什么一个比另一个更好,如果分散更可取,有没有办法让代码更干净?
【问题讨论】:
但在这些示例中,他们似乎并没有从状态中提取 2 个或更多项目我会称那些糟糕的教程,IMO 传播实际上给了你整个状态对象。而在解构中,您将特定的 obj 分配给与
定义的相同变量名。两者都有不同的用例。他们不相似
@MeetZaveri 抱歉,我写错了展开语法。我的意思是包括每个单独对象的传播。 ...this.state.obj1 而不是 ...this.state
【参考方案1】:
很遗憾,我无法在这里得到答案。感谢 Reddit,我现在可以回答这个问题了。
Spread 创建一个浅拷贝。解构会创建一个引用,这会导致状态直接发生变异。从状态拉回状态时始终使用传播。仅用于从状态读取时,解构很好。
【讨论】:
以上是关于使用传播或解构获取反应状态对象的主要内容,如果未能解决你的问题,请参考以下文章