問題タブ [fluxor]
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.
c# - 3 つの子コンポーネントで状態を共有し、イベントを処理する | フラクサー
私はフラクサーとそれが基づいている還元/フラックスパターンに不慣れです。現在、Blazor wasm プロジェクトに取り組んでいます。状態管理にフラクサーを使用することにしました。しかし、次のシナリオをどのように処理するのか疑問に思っています。
ページが読み込まれると、コンポーネント 1 は API トラフ フラクサー状態管理からのデータで満たされます。
コンポーネント 1 は、ユーザーが選択できるアイテムのリストです。クリックすると、この項目が API から取得され、コンポーネント 3 内に完全に表示されます。アクティブな項目を表すテキストがコンポーネント 2 に表示されます。
コンポーネント 2 は、単純な [戻る] ボタンと [次へ] ボタンを使用してリストを移動するナビゲーターです。[次へ] をクリックすると、コンポーネント 3 は API から次の項目を取得し、項目全体を表示する必要があります。次に、コンポーネント 1 は、リストのどの項目が選択されているかを示すことで、この変更を反映します。
完全なアイテムを取得するためのアクションなどがあります。ただ、どこから発送すればよいかわかりません。または、アクティブなアイテムが何であるかをすべてのコンポーネントが認識していることを確認する方法。「純粋な」ブレザーでは、これをすべてトラフ イベント コールバックで行い、アクティブなアイテムの状態をローカルで処理します。しかし、それはフラクサーのポイントを無効にします。
c# - .cs ファイル内の通常のクラス内で Fluxor アクションを発生させる
Fluxor または C# Dependency Injection に精通している誰かが、私が数日間苦労してきた問題を解決してくれませんか。
Blazor コンポーネント内で Fluxor を使用する場合は、次を含めてアクションを発生させます。
これにより、次のようにコンポーネント内でアクションを発生させることができます Dispatcher.Dispatch(new MyAction(MyParameter))
。
Blazor コンポーネントから Fluxor アクションをディスパッチすることに加えて (これはうまく機能しています)、.cs ファイルの通常のクラスからアクションをディスパッチできる必要があります。次の TestClass に示すようにインジェクションを試しましたが、ヒットすると aNullReferenceException
が発生しDispatcher.Dispatch
ます。
明らかに何かで宣言された Dispatcher をインスタンス化するprivate IDispatcher Dispatcher { get; set; }
必要がありますが、次のように Startup.cs でインスタンス化が行われたと思いました。
明らかに、ここで何かが欠けていますが、それが何であるかに困惑しています。通常の .cs ファイルに含まれるクラス内で Fluxor アクションを発生させる方法について、誰かがガイダンスを教えてくれますか? ありがとう。
Peter Morris の提案に従ってコンストラクター インジェクションを使用して、テスト クラスを次のように変更しました。
ただし、現在苦労しているのは、クラスをインスタンス化するときに、TestClass コンストラクターに渡すことができる Fluxor Disptacher への参照を取得するにはどうすればよいですか? Fluxorはサービスとして実装されていると思いました。
...それは、何らかの形でグローバルに参照できるようになっています。
次の更新...
私の TestClass は、インターフェイスを実装するように変更され、Startup.cs にスコープ サービスとして登録されました。
Startup.cs
これらの変更の結果として、TestClass がインスタンス化され、そのInitiateAction
メソッドを呼び出してアクションをディスパッチできると予想していました。ただし、次のコードでは頑固に null のままです。
更新 ... 私の DeviceListener クラスは、Cometd.Bayeux.Client.IMessageListener インターフェースを実装し、非送信請求メッセージがサーバー プロセスから受信されたときに実行される Callback を定義します。Startup.cs で参照されています。
クラスは次のように構成されています。
上記の DeviceListener にすべて示されていますが、 内から Fluxor アクションをディスパッチできるようにしたいと考えていますonMessage
。
上記の DeviceListener はパラメーター化されたコンストラクターを示していますが、実際にlistener.subscribe(new GWS.DeviceListener());
は Startup.csで引数のコンパイル エラーが発生します。
c# - 状態はフラクサーのどこに保存されますか?
私は状態管理を扱うのが初めてです。現在、私は blazor アプリケーションに取り組んでおり、flux パターンを介して状態管理を可能にする「fluxor」フレームワークに出くわしました。Fluxor は私にとっては完璧に機能していますが、ページの State が実際にどこに保存されているのかわかりません。それはキャッシュ、データベース、またはその他の派手な方法ですか? その保存されたデータをブラウザで見る方法はありますか?
ちなみに、私はアプリケーションのクライアント側でフラクサーを使用しています。
助けてくれてありがとう!
redux - Blazor での状態管理のオプション
Blazor で webassembly (wasm) の状態管理に使用できるライブラリ/手法は何ですか。
さまざまなアプローチの長所と短所を知っておくとよいでしょう。