Mobx更新对象中的单个属性

时间:2018-01-24 07:23:27

标签: javascript mobx mobx-react

我在商店中创建了observable属性,如下所示

class Store {
  @observable values = { id: '', name: '' }
}

这个可观察对象用在一个表单中,如何在提交表单后重置这些值?

2 个答案:

答案 0 :(得分:1)

您可以使用extendObservable并在班级上实施 string template = string.Empty; string simpleString = "Test Value"; string interpolatedString = $"Name: {simpleString}"; //interpolatedString is now "Name: Test Value" string filePath = Path.GetFullPath("Templates/ToEnrollee.html"); using (StreamReader reader = new StreamReader(filePath)) { template = reader.ReadToEnd(); } //I would like interpolation to take place here string body = string.Format(template); 方法:

reset

答案 1 :(得分:0)

@Tholle如果您不将属性扩展到this.values可观察量,那么解决方案就很好。如果这样做,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()
    }
}