問題タブ [redux-promise-middleware]
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.
typescript - Redux Promise Middleware でディスパッチのリターン タイプを処理する方法は?
Redux Promise Middleware は、アクション ペイロードの promise 解決を処理しているようです。たとえば、Promise
ペイロードとしてを使用する次のアクション作成者を考えてみましょう。
このアクション クリエーターを使用する場合、TypeScript はredux-promise-middleware のために実際に返されるAction
データではなく、返されるデータを期待します。Promise
したがって、次のコードはコンパイルされません。Property 'then' does not exist on type 'Action'.
Typescript はpayload
やtype
のような返されるプロパティを期待しますが、プロミスは既に処理され、実際に返されているため、実際には返されません。
.then
使用する準備ができていますが、typescript は何か他のものを期待しているためコンパイルされません。
問題は次のとおりだと思います: redux-promise-middleware アクションを処理するための正しいタイピングを記述し、redux'connect
関数に正しいディスパッチ タイプmapDispatchToProps
などを提供する方法.
javascript - Redux Promise Middleware でアクションを連鎖するにはどうすればよいですか?
私はReactとReduxを初めて使用します。redux-promise-middlewareを使用して複数の API 呼び出しをチェーン化し、次のようにアクションを実装したいと考えています。
locationActions.js:
以下を使用して、React コンポーネントからこのアクションをディスパッチしますmapDispatchToProps
。
これはうまくいきます!visitLocation
しかし、決済が完了してから別のアクションをディスパッチしたいです。Promise.then()
メソッドが提供されていないため呼び出すことができませんdispatch
。したがって、アクションをレデューサーに「バインド」しません。
チュートリアルでは、呼び出す必要dispatch(secondAction())
があると記載されていますが、アクション クリエーターでディスパッチを利用できません。
誰かが私に欠けているものを指摘できますか?
編集:
最初の回答で示唆されているように、次のアプローチを試しました。
しかし、私は action:undefined と次のエラーを受け取りました: