哪种MOBX模式用于检测变化并更改其他可观察物



我多次阅读了自动龙和反应的描述,但是当我检测到一个可观察到的一个变化时,我仍然不清楚哪种模式,我想更新其他可观察到。

示例

我有下面显示的地址对象。每当该国变化时,我都想重置/重新定位所有其他字段。一种方法是在Address类中拥有一个@action setCountry() {...},该类别负责设置其他可观察物。但是,我没有这种奢侈品,因为我的UI使用通用技术来更新商店属性,即_.set(entity, attr, value)。因此,我想使用autorun之类的内容来检测更改并更新其余的可观察物。正确的方法是什么?

class Address {
    @observable name;
    @observable line1;
    @observable line2;
    @observable city;
    @observable state;
    @observable zip;
    @observable country;
    ...
}

听起来像观察对您的用例都很好。

示例(jsbin

class Address {
  @observable name = '';
  @observable line1 = '';
  @observable line2 = '';
  @observable city = '';
  @observable state = '';
  @observable zip = '';
  @observable country = '';
}
const address = new Address();
observe(address, change => {
  if (change.name === 'country' && change.newValue === 'Sweden') {
    address.city = 'Stockholm';
  }
});
autorun(() => {
  console.log(toJS(address));
});
setTimeout(() => {
  address.country = 'Sweden';
}, 2000);

最新更新