Mobx 更新一个对象中的单个 属性
Mobx update a single property in an object
我在我的商店中创建了一个 observable
属性
class Store {
@observable values = { id: '', name: '' }
}
这个可观察对象在表单中使用,提交表单后如何重置这些值?
您可以使用 extendObservable 并在 class 上实施 reset
方法:
const initValues = { id: '', name: '' };
class Store {
@observable values = {};
constructor() {
extendObservable(this.values, initValues);
}
reset() {
extendObservable(this.values, initValues);
}
}
如果您不将属性扩展到 this.values
可观察对象,@Tholle 的解决方案很好。如果这样做,reset()
方法将不会清除新扩展的属性。
这是我的解决方案:
class Store {
const initValues = {id: '', name: ''};
@observable values = {};
@action resetValues() {
Object.keys(this.values).forEach(key => delete this.values[key]);
extendObservable(this.values, initValues);
}
constructor() {
This.resetValues();
}
}
或者更好的是,改用可观察地图:
class Store {
const initValues = {id: '', name: ''};
@observable values = new Map();
@action resetValues() {
this.values.replace(initValues);
}
constructor() {
this.resetValues()
}
}
我在我的商店中创建了一个 observable
属性
class Store {
@observable values = { id: '', name: '' }
}
这个可观察对象在表单中使用,提交表单后如何重置这些值?
您可以使用 extendObservable 并在 class 上实施 reset
方法:
const initValues = { id: '', name: '' };
class Store {
@observable values = {};
constructor() {
extendObservable(this.values, initValues);
}
reset() {
extendObservable(this.values, initValues);
}
}
this.values
可观察对象,@Tholle 的解决方案很好。如果这样做,reset()
方法将不会清除新扩展的属性。
这是我的解决方案:
class Store {
const initValues = {id: '', name: ''};
@observable values = {};
@action resetValues() {
Object.keys(this.values).forEach(key => delete this.values[key]);
extendObservable(this.values, initValues);
}
constructor() {
This.resetValues();
}
}
或者更好的是,改用可观察地图:
class Store {
const initValues = {id: '', name: ''};
@observable values = new Map();
@action resetValues() {
this.values.replace(initValues);
}
constructor() {
this.resetValues()
}
}