問題タブ [redux-observable]
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.
javascript - redux-observable - 単一のエピックで複数の redux アクションをディスパッチする
redux-observable
ミドルウェアの単一の叙事詩で複数の還元アクションをディスパッチする方法を探しています。
私が次のエピックを持っているとしましょう。イベントが発生するたびにSEARCH
、Epic はバックエンドからデータをロードし、アクションをディスパッチしRESULTS_LOADED
ます。
searchPromise
ここで、が解決されたときに追加のアクションをディスパッチする必要があると仮定しましょう。
RESULTS_LOADED
これを行う最も簡単な方法は、2 番目のアクションをリッスンしてディスパッチする 2 番目の叙事詩を持つようです。そのようです:
この単純な例では、非常に簡単です。しかし、エピックが成長すると、他のアクションをトリガーすることを唯一の目的とする多くの還元アクションを自分自身が持っていることに気付く傾向があります。さらに、rxjs コードの一部を繰り返す必要があります。私はこれが少し醜いと思います。
それで、私の質問: 単一のエピックで複数の還元アクションをディスパッチする方法はありますか?
javascript - redux-observable エピック内から状態にアクセスする
私は redux を使って小さな fusball-manager を構築しています。基本的には、両方のチームのスコアとそれらをインクリメントするいくつかのボタンを表示するページです。{ type:"GOAL_UP", team:"red" }
レデューサーが状態の対応する値 (スコア) を変更するようなアクションがあります。
GOAL_UP
ここで、2 つのチームのいずれかがゲームに勝った場合にチェックが発生するたびに、エピックを追加したいと考えています。GAME_WON
チームのスコアが 8 に達したら、アクションをディスパッチしてもらいたいです。私の問題は、各チームのスコアを知るために状態にアクセスする必要があることです。エピック内から状態にアクセスする方法が見つかりません。
redux-observable の範囲外の状態にアクセスしていますか? もしそうなら、あなたはこの問題をどのように解決しますか?
GOAL_UP
新しいスコアをアクションのプロパティとして持つことを考えています。このようなもの{ type:"GOAL_UP", team:"red", newScore:8 }
。しかし、なんとなくこれは間違っているように感じます。また、fusball-table には、GOAL_UP
アクションをディスパッチする Web ソケットに接続された 2 つの物理ボタンがあります。それらは私のUIからトリガーされていないため、状態について知りません。
どちらかのチームのスコアが 8 の場合、UI コンポーネントの render 関数でアクションをディスパッチすることも考えGAME_WON
られます。しかし、それはさらに間違っているように感じます :)
入力は大歓迎です、ありがとう
javascript - Redux Observable を使用した EventSource の方法
質問は簡単です。どうすれば redux-observable を EventSource で使用できますか?
RxJ では次のようになります。
rxjs - redux-observable エピックのスタブ キャッチ
rxjs オブザーバーの catch 関数をテストしようとしていますが、catch が実行されません。
test.js
rxjs - キャンセルに応じてアクションをディスパッチする
redux-observable docs のキャンセル レシピから始めて、少し拡張したいと思います。
基本的に、キャンセルがトリガーされた後、takeUntil
別のアクションをディスパッチしてクリーンアップするなどのシナリオがあります。
これは私がこれまでに思いついたものです: https://jsbin.com/zemenu/195/edit?js,output
「ユーザー情報の取得」を開始し、[キャンセル] をクリックします。次の順序でアクションを実行したい:
- USER/FETCH
- REQUEST/STARTED
- USER/CANCELLED
-REQUEST/CANCELLED
これは、現在セットアップしている方法で機能します。dispatch
しかし、私は関数への受け渡しに依存しrequestSequence
、それを でトリガーする必要がありfinally
ます。観察可能な演算子だけでこれを行うためのよりクリーンな方法はありますか? したがって、それUSER.CANCELLED
がトリガーされると、いくつかの最終アクションがrequestSequence
オブザーバブル内にマップされます。
Redux ロガーが有効になっているため、コンソールですべてのアクションを確認してください。
redux - 逆の順序で呼び出される RxJS Observables
3 つのアクションをディスパッチする次のコードがあります。
- deleteLineFailed
- showConfirmationMessage
- 2 秒待つ
- hide確認メッセージ
いくつかの理由で、私がそれを機能させることができた唯一の方法は逆の順序です.私が間違っているのは何ですか?
reactjs - debounce オペレーターを使用した redux-observable Epic のテスト
次のredux-observable叙事詩を持つ:
そして次のテスト
store.getActions() は、「MOUSE_OVER」という 1 つのアクションを含む配列を返します。一方、デバウンスを削除すると、別の(および予想される)アクション「OVER」が返されます。
テストでデバウンス演算子をスタブ/削除したいと思います。sinon スタブ関数を使用してこのリンクのアイデアをたどろうとしましたが、成功しませんでした。
RxJS オペレーターまたは具体的にはデバウンス/スロットルをモックする方法に関するいくつかのガイドラインをいただければ幸いです。
React、Mocha、Chai、Enzyme を使用して...
ありがとう