我想存储组件的状态类的自定义实例,但我不知道如何在正确的方式更改数据
例如改变之前我做对象的克隆。
例如我有一些属性的自定义对象:
this.state={
user: new User();
}
当需要更改数据我做
const user = _.cloneDeep(this.state.user);
user.setSettings(/*some object of settings*/)
this.setState({user});
每一次它的确定使用cloneDeep?也许有一个更好的方式变化数据,不容易反应的生命周期?
这是一般不宜在类实例使用cloneDeep
因为一个类可以当实例被克隆,打破实例化逻辑。这是最好创建new
一个新的类实例,一类还应该支持克隆为了新实例从现有的情况下成功地水合:
Foo.clone(fooInstance)
其中clone
是一样的东西:
class Foo {
static clone(instance) {
const barArg = instance.bar;
const bazarg = instance.baz;
return new Foo(barArg, bazArg);
}
...
}
这给一流的设计额外的约束。
由于不可变的状态是惯用的反应,使用类实例的状态管理复杂的,因为这些问题。这就是为什么它是最好使用对国家做出反应平淡对象的原因。