5

こんにちは、私はストアで MobX を使用しており、計算値が変更されたときに非同期反応が必要です。

class Store {
    @observable user;
    @observable something;

    @computed get firstParam () {
         return this.user && this.user.params[0];
    }

    async loadSomething () {
        reaction(
                () => this.firstParam,
                async (param) => {
                    const { data: something } = await axios.get(`url/${param}`);

                    runInAction('update state after fetching something', () => {
                        this.something = something;
                    });
                }
            );
     }

}

実行中の状態とは別に、when代わりに使用すると、ここで何が違うのだろうと思っていましたか?reaction

when(
    () => !!this.firstParam,
    async () => {
         // fetch using this.firstParam
    }
)
4

2 に答える 2

7

一度whenだけ効果を実行してから停止することに注意してください。したがって、あなたの場合、データは一度だけフェッチされます。

于 2016-08-23T15:26:41.897 に答える
3
        reaction(
            () => this.firstParam,
            async (param) => {
                const { data: something } = await axios.get(`url/${param}`);

                runInAction('update state after fetching something', () => {
                    this.something = something;
                });
            }
        );

これはちょうど追跡さthis.firstParamれ、それが新しいデータを返すときに呼び出されます

            async (param) => {
            const { data: something } = await axios.get(`url/${param}`);

            runInAction('update state after fetching something', () => {
                this.something = something;
            });

さて、あなたが行くなら、when私はそれが同じことをすることになると信じています, mobx docsから取得:

観察可能なデータ構造をプロミスとして使用できます...非同期アクションが完了したら、データを更新するだけです

したがって、あなたの場合に使用しない理由はありませんwhen

于 2016-08-21T10:10:43.760 に答える