之间是否有区别/优势
const { foo } = this.state
并传播
const { foo } = { ...this.state }
我要通过在最后一行调用this.setState({foo})
来更新状态。
我所说的“差异/优势”是:push
上是否有任何突变(如foo
)只能通过破坏扩展状态(后者)来正确完成? >
答案 0 :(得分:1)
如果某些东西在需要CPU减少工作的版本中起作用,那么
第二个版本:
第一个版本是您使用原始对象复制的对象,因此您只是从第二个版本开始执行第三步
答案 1 :(得分:1)
除了价差创建了一个新对象之外,实际上还有一个细微的差别。 Spread还仅复制对象自己的可枚举属性。
考虑:
let proto_state = {foo: "mark"}
let state = Object.create(proto_state)
console.log(state.foo) // inherits it from the proto_state
let {foo} = {...state} // undefined not own prop
console.log(foo);
({foo} = state) // gets the inherited foo
console.log(foo);
我不知道这是否真的与您的代码有关,但它们并不相同。
答案 2 :(得分:0)
在第二种情况下,您首先要克隆状态,然后对其进行解构。它增加了一个不必要的步骤,因为您应该在写入状态下将其克隆/更改为不变。