私はautorunとreactionの説明を何度も読んでいますが、1つの観測値の変化を検出したときにどのパターンを使用するかはまだ分かりません。変更を検出して他の観測値を変更するために使用するMobXパターンはどれですか?
例
Iは、以下に示したアドレスオブジェクトを持っています。国が変わるたびに、他のすべてのフィールドをリセット/再初期化したい。これを行う1つの方法は、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;
...
}
まさにあなたが他の観測を更新したいと思いますか?私にとっては、これは[** computed **](https://mobx.js.org/refguide/computed-decorator.html)の優れたユースケースのように聞こえるので、派生した値は自動的に更新されます。 – Tholle
他の値は導出されないので、この場合は計算が適切ではありません。 1つのユースケースはこれです:選ばれた国によっては、他のオブザーバブルをその国の本社にデフォルト設定したいのですが、それは時間の90%が望ましいかもしれません。しかし、ユーザーは自由にアドレスを他のものに変更することができます。これが私が国への変化を見て、適切に反応したいと思うところです。 – Naresh