問題タブ [mobx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
667 参照

reactjs - MobX: autorunAsync アクションで観察可能な値を更新する

ソースはこちらdevelopブランチにあります。

この単純なアプリでは、更新autorunAsyncをデバウンスsearchTextし、それに応じて Giphy API をフェッチするために使用します。リクエストの処理中に入力の横に単純なローダーを表示するまで、すべてが正常に機能します。

この行のコメントを外すと、アクションが無限に起動されます。

ここに画像の説明を入力

対象のオブザーバブルが変更された場合にのみアクションを実行するautorunと思いました。autorunAsyncsearchText私の場合)

同じアクション内で副作用 (API フェッチなど) と状態更新の両方を組み合わせるにはどうすればよいですか? 試してみtransactionましたが、動作させることもできませんでした.MobX の概念に頭を悩ませるにはもっと時間が必要です。これはばかげた間違いだと確信しています。:)

どんな助けでも大歓迎

0 投票する
1 に答える
13018 参照

mobx - 実際のMobx Autorun

Mobx の自動実行を正しく機能させようとしています。

私のユースケースは、変更されたときにシリアル化 (または脱水) し、その情報を別のモデルのデータに追加するのが好きな 1 つのモデルがあることです。これにより、モデル状態の初歩的なタイムトラベルが可能になります。どちらも観測対象です。

編集:モデル分離のアイデアは、1つはアプリのデータモデルであり、もう1つはアプリから使用できる完全に分離されたライブラリである必要があるということです。アプリの変更を定期的に追跡する必要がありますが、同じページに状態ツールの UI を表示します。

現在、自動実行は、私が実際に追跡しているものを独自に推測しているようです。モデルのインスタンス化を監視する中でモデル インスタンスを移動すると、変更が発生したときに自動実行が呼び出されなくなりました。モジュールの最上位にモデルインスタンスを作成すると、思った通りに動きました。これは、観察モデルの 1 つのプロパティ (すべての自動実行呼び出しによって変更されるもの) のみを変更したときでした。観察モデルで一度に 2 つのことを変更しようとしたところ、自動実行がこれらの変更に対しても呼び出されるようになり、終わりのないサイクルにつながりました (これを Mobx がキャッチしました)。

自動実行機能で追跡しているものをより明示的に表現する方法、またはモデルの変更を追跡し、何かが発生したときに他のモデルを更新する他の方法があるかどうかを知りたいです。


コード例で編集します。

これは私がやったことです(非常に単純化されています):

また、元のデータ モデルの変更とその結果のストアの変更の両方に対して autorun が呼び出されるため、循環依存関係が作成されますが、前者への変更の追跡にのみ関心があります。


作業結果で編集:

@mweststrateの回答によると、ストアの状態変数でasFlatを使用し、自動実行からログを削除すると、問題のサイクルが壊れました。

0 投票する
3 に答える
5935 参照

javascript - mobxの作り方

私は自分のアプリを構築する方法を理解しようとしています.それ:

私の質問は次のとおりです。それとももっと良い方法がありますか??

0 投票する
1 に答える
747 参照

javascript - クラスコンストラクターでの発火を防ぐためにMobx.autorunを生成する方法は?

このクラスでは、初期化された bool 状態を使用して Mobx.autorun を実行します。そうしないと、'this' が完全に割り当てられず、エラーが発生します。これを行う別の/よりクリーンな方法はありますか?

これは別のファイルで私の観測可能です: