問題タブ [redux-thunk]
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.
reactjs - コンポーネントからディスパッチされたときのreduxアクションは「関数ではありません」
CSV アップロードでアプリを作成しようとしています。CSV がアップロードされると、状態が変更されます。次に、CSV から JSON に解析し、処理を行います。アイデアは、ファイルをアップロードして状態を更新することです。その状態が更新されたら、CSV を Meteor.method に渡して JSON に解析します。Meteor、React、Redux を使用しています。アップロード、アクション、およびリデューサーを処理するコンポーネントがあります。すべてのファイルは以下のとおりです。私は Meteor、React、Redux の初心者であり、なぜこれが機能しないのか一生わかりません。自分が達成しようとしていることを完全に理解しているとは思えません。どんな提案でも大歓迎です。
エラー - キャッチされていない TypeError: fileUpload は関数 UploadCSV.jsx ではありません
アクションであり、インポートされている場合、fileUpload が「関数ではない」理由がわかりません。誰かが手を貸してくれるなら、私はそれを感謝します。
ありがとう!
redux - Redux でのアクションの再生
タイマーを使用するReduxでライブラリを構築しています。イベントをディスパッチし、タイマー オブジェクトSTART_TIMER
も呼び出す必要があるアクション クリエーターがあります。start
コードは次のようになります。
私が解決しようとしている2つの問題があります:
アクションをデータベースまたは localStorage に記録して、それらを再生して一貫したアプリの状態を取得できるようにする場合、それ
rootState.timer.isRunning
が true であっても、タイマー オブジェクトは実行されません。条件付きでは、ルート状態のどこにマウントさ
if (!getState().timer.isRunning)
れているかを知っている必要があります。timer
これをライブラリとして構築しているため、timer
常にルート状態に直接マウントされるとは限りません。
reactjs - Redux は動作中の「type」プロパティを見つけることができません
Reduxでミドルウェアを使用していますが、アクションをディスパッチするとブラウザでエラーが発生します:
コードはここにあります:
そして私のaction
:
私のcomponents
:
reducer
:
私が呼び出すとfetchPostsIfNeeded
、それが呼び出さfetchPosts
れ、次に呼び出されdispatch(requestPosts(reddit))
ましたが、私のレデューサーはこのアクションを処理できず、コンソールのレデューサーにアクションを出力すると表示されますundefined
reactjs - Redux での複数の非同期ディスパッチの連鎖
次の方法で複数のアクションを連鎖させようとしています。
A. ユーザーデータをデータベースに投稿する
B. 投稿されたデータを使用して Elasticsearch にクエリを実行し、結果を得る
(AとBを並行して行います)
B1. ES からの結果を使用して、元のデータベースに 2 つのテーブル B2 からの結果を照会します。新しいページに移動して UI を更新する
現在、サンクを使用してコードを推論していますが、この非同期パターンは非常に冗長であることがわかりました。
これは、「requestRecipes」と「receiveRecipes」とともに、他のアクション クリエーターが 1 つの非同期呼び出しを行うだけのように思えます。(リクエスト、レシーブ、フェッチ機能)
要約:出力が互いに依存する2〜3の非同期アクションをチェーンしている場合(可能な場合は約束する必要があります)、非同期呼び出しごとに3つの関数を作成せずにそうするより効率的な方法はありますか?
方法があったはずだと思います。私は Redux のドキュメントからパターン マッチングを行っていますが、作成していた関数にすぐに圧倒されてしまいました。
フィードバックをありがとう!
javascript - 条件の場合、他のアクションの後にアクションを呼び出す Redux
次のロジックの redux でどのように実装する必要がありますか: 同期と非同期の 2 つのアクションがあります。そのvalidate()とsave()としましょう。ユーザーが実行されたボタンをクリックすると、状態ストアの変数がvalidate()
変更されます。isValid
次に、isValid
保存アクションが実行された場合。
reactjs - Redux - 非同期アクションがディスパッチされたときに URL を変更する
私の React/Redux アプリケーションには、いくつかの非同期アクションがあります。ユーザーがgetData
サーバーへのリクエストを開始するとします。すぐに aGET_DATA_REQUEST
がディスパッチされ、getData
AJAX 呼び出しがサーバーに向かっています。
成功または失敗すると、それに応じてGET_DATA_SUCCESS
またはGET_DATA_FAILURE
アクションがディスパッチされ、データが UI にレンダリングされます。
react-router-redux
ここで、AJAX コールバックへの反応として、アプリケーションに ( を使用して) 履歴状態をプッシュさせたいと考えています。つまり、成功すると、ユーザーは別の URL (ルート) に「リダイレクト」され、新しく受信したデータに依存する別のモジュールが表示されます。
この機能をレデューサーに含めるのは非常に悪い考えだと思います。これはもはや純粋ではなくなるためです (URL の変更は副作用です)。
何かご意見は?
ありがとう
reactjs - Axios API で使用する場合の Redux-Thunk と Redux-Promise の違いは何ですか?
私は React 、 Redux を数か月前から使用しています。エコシステムで最も紛らわしい部分の 1 つは、非同期データ フローです。多くの優れたソリューションが利用可能であり、問題に適したソリューションを選択することは難しい部分です.
私のアプリケーションでは、アクション クリエーターはほとんどの場合、バックエンドAPI に対して async axios [ajax] 呼び出しを行います。Redux-Promise をミドルウェアとして注入すると、非同期データ フローの問題が解決されます。
スケーラブルなアプリを考えると、アクション クリエーターで複数の axios 呼び出しをチェーンする必要があるかもしれません。Redux-Promise をミドルウェアとして引き続き使用できると思います。これにより、アプリの非同期データ フローが処理されます。
一般的に、チームは Redux-Thunk を使用する傾向が強く、この問題の構文がより複雑に感じます。私のアクション作成者のほとんどが axios 呼び出し (約束) のみを行っていることを考慮して、これら 2 つのフレームワークを評価する際に提案が必要です。Redux-thunk hereに関する多くの議論を見てきました。thunk がいかに役立つかを理解しました。. しかし、Promises のみに使用する場合に Redux-Promise と Redux-Thunk を一緒に評価することについて、さらに明確にする必要があります。そのような状況でどのミドルウェアが優れているか、またその理由は? Redux-Promise よりも Redux-Thunk を使用すると、どのような利点がありますか? それともありませんか?
javascript - 初期状態を計算するために Redux で同期アクションを使用して非同期をチェーンしますか?
長いテキストで申し訳ありません...初期状態を計算するために互いに待機する必要があるいくつかのアクションをチェーンする最良の方法を見つけようとしています。おそらく再選択が役立つでしょうが、それをどのように適合させるかを理解するのに苦労しています.ImmutableJSを使用していますが、標準のJSONを使用して問題を説明します. 初期状態は次のようになります。
bookとdetailedNotesは GET 呼び出し (フェッチを使用) からのものです。notesByCategoryは私のコードによって計算されます (現時点ではレデューサーで...)。 また、activeCategoryの初期値を最初に計算されたカテゴリ (例ではVital ) として設定する必要があります。actions.js と reducer.js に関連するコードは次のとおりです。
レデューサー構成もありますが、割愛しました。ここで、最初のactiveCategoryを最初のカテゴリに設定したいのですが、問題があります。これをどこに置くべきかわかりません。状態のnotesByCategory部分が計算されるまで、最初に待機する必要があります。この計算はレデューサーに入れるべきではないと思います。助言がありますか?