を変更するときにコンポーネントを更新しない Mobx反応する。.. observable.map値が私の店で
@observable dots = observable.map({
'0x001': extendObservable({ x: 2000, y: 2000 }),
'0x002': extendObservable({ x: 5000, y: 5000 }),
'0x003': extendObservable({ x: 10000, y: 10000 }),
});
@action updateDot(id, properties) {
const dot = this.dots.get(id);
this.dots.set(id, extendObservable(Object.assign(dot, properties)));
}
私はドット値を更新
...store.updateDot('0x002', {
x: 200,
y: 300,
});
私のコンポーネントは反応しません。 。
@inject('store') @observer
export class IndexComponent extends Component {
render() {
const { store } = this.props;
const { dots } = store;
return <Map dots={dots} />
}
}
とマップ..
とマトリックス...
@observer
class Matrix extends Component {
render() {
const { dots, ...rest } = this.props;
// NOT CALLED WHEN UPDATE DOTS
return <div ...rest ></div>
}
}
ドットプロパティを変更しても反応がない... https://runkit.com/ridermansb/react-on-map-object-change/2.0.0 – ridermansb
「観察」は何もしない「オブザーバー」と一緒に。 'autorun'が近づきます。観察するのは、地図の内容ではなく、地図の変更だけです。最大のMobX(オートランのような)はあなたが実際に使っているものだけを追跡します。したがって、 'map.get(01).x'プロパティにアクセスしなければ、それはその中の変更に反応しません(なぜなら、あなたがそれを使用しない場合、なぜ値が適切なのでしょうか?)。私はあなたの元の質問では、欠けているのはマトリックスがオブザーバーであること、あるいは最初にデレファレンシングすることだと思います。私は、https://mobx.js.org/best/react.htmlを慎重に読むことをお勧めします。 – mweststrate