何时在React中深层克隆对象

时间:2017-03-31 05:10:07

标签: javascript reactjs object clone deep-copy

我最近学到了很浅很长的关于对象的浅层和深层克隆,以及在做过这样的事情之后浅层克隆对象之间存在的关系:

this.state = {
  obj: props.obj,
}

let { obj } = this.state

obj.x = event.target.value

if (obj !== this.props.obj) {
  this.setState({obj})
}

相反,将props.obj的深层克隆分配给state.obj后,这样就可以了。我开始环顾四周,在我的代码中发现了这种模式:

let obj = this.state.obj
obj.x = 'test'
this.setState({obj});

在没有意识到我实际上是在直接改变this.state的情况下,哪个工作正常。这不是一个问题,因为我几乎总是在改变后立即调用setState。我正在遵循这种模式,以避免直接改变状态。

  1. 在不直接更改状态对象的情况下更改状态的首选方法是什么?
  2. 深度克隆对象时是否有规则/指南/最佳做法?
  3. 为了避免这一切,总是深度克隆是否有任何不足之处?
  4. 也许这些可以归结为一个我不知道怎么说的问题。

0 个答案:

没有答案