我最近学到了很浅很长的关于对象的浅层和深层克隆,以及在做过这样的事情之后浅层克隆对象之间存在的关系:
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
。我正在遵循这种模式,以避免直接改变状态。
也许这些可以归结为一个我不知道怎么说的问题。