問題タブ [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.
testing - redux-saga のテストを書く
次のサガ関数をテストしています
これらは、3番目と4番目の収量に対する私のテストです:
actual は undefined を返します。つまり、gen.next(response,channel,date).value は undefined を返します。これらをテストする正しい方法を教えてください。ありがとう
redux-saga - rootSaga を開始する慣用的な方法は何ですか?
redux-saga プロジェクトはかなり前から存在していますが、このライブラリについてはまだ多くの混乱を招くことがあります。それらの 1 つは、rootSaga を開始する方法です。たとえば、初心者のチュートリアルでは、rootSaga はサガの配列を生成することによって開始されます。このような
ただし、saga ヘルパーの使用セクションでは、rootSaga は 2 つのフォークされた saga で構成されています。このような:
rootSaga を開始するのと同じ方法が、redux-saga リポジトリの非同期の例で使用されています。ただし、現実世界とショッピング カードの例を確認すると、そこにある rootSagas がフォークされたサガの配列を生成することがわかります。このような:
また、redux-saga の問題に関するいくつかの議論を読むと、フォークされたサガの 1 つが未処理の例外のためにキャンセルされた場合にアプリケーションが完全にクラッシュするのを防ぐために、rootSaga に fork の代わりに spawn を使用することを提案する人がいることがわかります。
では、rootSaga を開始する最も正しい方法はどれですか? そして、既存のものとの違いは何ですか?
javascript - redux-sagas ジェネレーターの生成がコールバック内で失敗する
sagasミドルウェアを使用して、firebaseを介してredux登録と認証フローを設定しようとしています。しかし、私は得ています:
少し一般的ですが、そのコード行をその周りに移動すると、yield は特にコールバックを好まないようです。ただし、これが明確に禁止されている場所はどこにもありません。これを行うためのより良い方法はありますか?これがサガジェネレーターです。
ここにfirebase登録関数があります:
編集:当初、これはif/elseが原因だと思っていましたが、コールバックが本当の原因のようです
lifecycle - コンポーネント ライフサイクルの Redux Saga 動作
これは一般的な質問です。x分ごとにストアを更新し、redux devツールでストアが適切に更新されることを示す呼び出しを生成するredux sagaがあります。コンポーネントのrenderメソッドで、データの前にクリックするとスピナーが表示され、コンポーネントがレンダリングされた後にクリックすると; ただし、コンポーネントクラスでは、ライフサイクル「componentWillUpdate」または「componentWillReceiveProps」は、reduxストアの接続されたピースをどちらのメソッドでも未定義として示しますが、レンダリングは正しい小道具を渡すことができます。何の音?ドキュメントに戻りますが、これは奇妙に思えます。
reactjs - オブザーバーを redux-saga に渡す
redux-sagas フレームワーク内から監視可能な firebase を活用しようとしていますが、ハックなしではこれを行うのに問題があります。ここに示すように、firebaseの「onAuthStateChange」関数を使用しようとしています
基本的に、オブザーバーは、ユーザーがサインインまたはサインアウトするたびに実行されます
私のfirebaseユーティリティファイルでは、私のメソッドは次のようになります:
それから私の物語では、今のところ、オブザーバーが何かを観察するたびにコンソールにログインしようとしています:
「コールバック」が定義されていないため、これは失敗します。私は本質的にオブザーバーをサガに渡すようにカレーしようとしていますが、うまくいきません。私の回避策は、完全な firebase auth オブジェクトをログイン/ログアウト サガに渡し、そこにオブザーバーを作成することです。それは機能しますが、ハックのようです。どんな助けでも大歓迎です。
javascript - コールバック リスナーの戻り値に変数を設定する
アプリケーションで認証を処理するためにfirebaseを使用しています。Firebase には、認証ステータスが変化するたびにコールバックを実行するリスナーがあります。私はそれをfirebase utilsファイルに持っています:
ユーザーがログイン/ログアウトすると、コールバックが実行されます。このオブザーバーを redux-saga で処理しようとしていて、firebase がステータスの変更を通知するたびにイベントをレデューサーに送信します。私が直面している問題は、そのオブザーバーの動的な戻り値を囲い込む方法を判断できないことです。今、私はこれをやっています:
if/else 条件が機能することを確認しました (ステータスが変更されたときにコンソールにログを記録するだけです) が、yield を使用しようとするとエラーが発生します。それはバグであるか、明確でないルールに違反しています。これを設定する他の方法はありますか?ベスト プラクティスの観点からは、これは redux-saga で処理する必要があるようです。
reactjs - サガでAPI呼び出しが成功した後にURLを変更する方法
使用事例:
ユーザーが購読した後、私は別のページに移動したいと思います。それは、ユーザーに電子メールを確認するように通知します。
成功ページに移動する方法はありますか。つまり/subscribe-success
、サーバーから成功の応答を受け取った後ですか?