問題タブ [redux-toolkit]
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 - createReducer の使用時にスライス レデューサー間でデータを共有する
ReactJS アプリがTypeScript
あり、レデューサーを構築するためにredux
使用しています。redux-toolkit
アプリが大きくなったので、レデューサーのリファクタリングを開始したいと考えています。
私の還元状態は次のようになります。
customers
とのorders
スライスは独立しているので、2 つの個別のレデューサーを簡単に作成して、combineReducers
後で組み合わせることができます。
orders
ここで、減速機をさらに分解したいと思います。
state1
そしてstate2
完全に独立しています。state3
からのデータに依存しますstate1
。state4
state1
とからのデータに依存しますstate2
。
createReducer
from redux-toolkit
(またはツールキットの他の機能)を引き続き使用して、スライス内のネストされorders
た各スライスのレデューサーを作成する方法はありますか?
のレデューサーを書き直し始めたorders
ので、これまでのところ次のとおりです。
注: 還元状態の構造を制御することはできません。私は使用に完全に縛られているわけではありませんredux-toolkit
が、チームがそれを使用しないようにするためには正当な理由が必要です。
redux - createAsyncThunk から他のアクションを呼び出す
通常、サンクでは、他のアクションを呼び出すことになります。
redux ツールキットでは、これcreateAsyncThunk
はそれほど簡単ではありません。実際、次の結果のアクションから状態を変更できますextraReducers
。
しかし、レシピを開始する非同期の方法も必要です。これには、スライスにレデューサーが必要です。
同じコードを 2 つの場所に記述することを避けるために、サンク ハンドラーから単純なレデューサー関数を呼び出せるようにしたいと考えています。startRecipe(state)
ケースから簡単に and startRecipe
(アヒルのエクスポート用に分解されていたので、正しい関数を参照していたと確信しています)を試しましextraReducers
たが、うまくいきません。
_startRecipe
私の現在の解決策は、スライスの外側で定義し、両方の場合でその関数を参照することです
slice.reducers
でシンプルなアクションを定義し、サンク ハンドラから参照できる「より良い」方法はありますextraReducers
か?