Reactjs Mobx @action 函数

Reactjs Mobx @action function

我刚开始使用 mobx。我有 mobx class 如下:

class Store{
@observable locationKey = null;
@observable query = '';

@action setLocationKey = key =>{
    this.locationKey = key;
}
@action setQuery = test =>{
    this.query = test;
}
}

我有两个可观察的属性,并且有两个可以改变这些属性的操作。据我所知,我只能通过动作改变可观察的属性,我不能直接改变,例如,this.props.store.locationKey = 5在其他组件中(我对吗?)

那么如果我有 100 个可观察属性并且我想更改它们,我是否必须为每个可观察对象执行每个操作?那将是非常低效的。有没有办法制作一个功能,以便所有可观察对象可以共享以改变属性?

好吧,您可以在您的商店中创建这样的功能 class 来处理您的数百个 @observable 属性。

@action setProperty = (key, value) => {
    this[key] = value;
}

对于第一个问题,您可以直接更改 @observable,但最好使用 @action 函数。所以继续使用 @action 函数。