我多次阅读了自动龙和反应的描述,但是当我检测到一个可观察到的一个变化时,我仍然不清楚哪种模式,我想更新其他可观察到。
示例
我有下面显示的地址对象。每当该国变化时,我都想重置/重新定位所有其他字段。一种方法是在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);