我刚刚开始使用mobx。我有mobx类如下:
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个可观察的属性并且我希望更改它们,我是否必须为每个可观察对象做出每个动作?那将是非常低效的。有没有办法制作一个函数,以便所有可观察对象可以共享以改变属性?
好吧,你可以在你的商店类中创建这样一个函数来处理你的数百个@observable
属性。
@action setProperty = (key, value) => {
this[key] = value;
}
对于您的第一个问题,您可以直接更改@observable
,但使用@action
函数是最佳实践。所以继续使用@action
函数。