問題タブ [redux-saga]

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 に答える
241 参照

testing - redux-saga のテストを書く

次のサガ関数をテストしています

これらは、3番目と4番目の収量に対する私のテストです:

actual は undefined を返します。つまり、gen.next(response,channel,date).value は undefined を返します。これらをテストする正しい方法を教えてください。ありがとう

0 投票する
2 に答える
10791 参照

redux-saga - rootSaga を開始する慣用的な方法は何ですか?

redux-saga プロジェクトはかなり前から存在していますが、このライブラリについてはまだ多くの混乱を招くことがあります。それらの 1 つは、rootSaga を開始する方法です。たとえば、初心者のチュートリアルでは、rootSaga はサガの配列を生成することによって開始されます。このような

ただし、saga ヘルパーの使用セクションでは、rootSaga は 2 つのフォークされた saga で構成されています。このような:

rootSaga を開始するのと同じ方法が、redux-saga リポジトリの非同期の例で使用されています。ただし、現実世界とショッピング カードの例を確認すると、そこにある rootSagas がフォークされたサガの配列を生成することがわかります。このような:

また、redux-saga の問題に関するいくつかの議論を読むと、フォークされたサガの 1 つが未処理の例外のためにキャンセルされた場合にアプリケーションが完全にクラッシュするのを防ぐために、rootSaga に fork の代わりに spawn を使用することを提案する人がいることがわかります。

では、rootSaga を開始する最も正しい方法はどれですか? そして、既存のものとの違いは何ですか?

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

javascript - redux-sagas ジェネレーターの生成がコールバック内で失敗する

sagasミドルウェアを使用して、firebaseを介してredux登録と認証フローを設定しようとしています。しかし、私は得ています:

少し一般的ですが、そのコード行をその周りに移動すると、yield は特にコールバックを好まないようです。ただし、これが明確に禁止されている場所はどこにもありません。これを行うためのより良い方法はありますか?これがサガジェネレーターです。

ここにfirebase登録関数があります:

編集:当初、これはif/elseが原因だと思っていましたが、コールバックが本当の原因のようです

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

lifecycle - コンポーネント ライフサイクルの Redux Saga 動作

これは一般的な質問です。x分ごとにストアを更新し、redux devツールでストアが適切に更新されることを示す呼び出しを生成するredux sagaがあります。コンポーネントのrenderメソッドで、データの前にクリックするとスピナーが表示され、コンポーネントがレンダリングされた後にクリックすると; ただし、コンポーネントクラスでは、ライフサイクル「componentWillUpdate」または「componentWillReceiveProps」は、reduxストアの接続されたピースをどちらのメソッドでも未定義として示しますが、レンダリングは正しい小道具を渡すことができます。何の音?ドキュメントに戻りますが、これは奇妙に思えます。

ここに画像の説明を入力

0 投票する
2 に答える
843 参照

reactjs - オブザーバーを redux-saga に渡す

redux-sagas フレームワーク内から監視可能な firebase を活用しようとしていますが、ハックなしではこれを行うのに問題があります。ここに示すように、firebaseの「onAuthStateChange」関数を使用しようとしています

基本的に、オブザーバーは、ユーザーがサインインまたはサインアウトするたびに実行されます

私のfirebaseユーティリティファイルでは、私のメソッドは次のようになります:

それから私の物語では、今のところ、オブザーバーが何かを観察するたびにコンソールにログインしようとしています:

「コールバック」が定義されていないため、これは失敗します。私は本質的にオブザーバーをサガに渡すようにカレーしようとしていますが、うまくいきません。私の回避策は、完全な firebase auth オブジェクトをログイン/ログアウト サガに渡し、そこにオブザーバーを作成することです。それは機能しますが、ハックのようです。どんな助けでも大歓迎です。

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

javascript - コールバック リスナーの戻り値に変数を設定する

アプリケーションで認証を処理するためにfirebaseを使用しています。Firebase には、認証ステータスが変化するたびにコールバックを実行するリスナーがあります。私はそれをfirebase utilsファイルに持っています:

ユーザーがログイン/ログアウトすると、コールバックが実行されます。このオブザーバーを redux-saga で処理しようとしていて、firebase がステータスの変更を通知するたびにイベントをレデューサーに送信します。私が直面している問題は、そのオブザーバーの動的な戻り値を囲い込む方法を判断できないことです。今、私はこれをやっています:

if/else 条件が機能することを確認しました (ステータスが変更されたときにコンソールにログを記録するだけです) が、yield を使用しようとするとエラーが発生します。それはバグであるか、明確でないルールに違反しています。これを設定する他の方法はありますか?ベスト プラクティスの観点からは、これは redux-saga で処理する必要があるようです。

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

reactjs - サガでAPI呼び出しが成功した後にURLを変更する方法

使用事例:

ユーザーが購読した後、私は別のページに移動したいと思います。それは、ユーザーに電子メールを確認するように通知します。

成功ページに移動する方法はありますか。つまり/subscribe-success、サーバーから成功の応答を受け取った後ですか?