私はいくつかの "ChangeMainItem"アクションを持っています(私の場合は、外部システムかコンポーネントのいずれかでディスパッチされます)。このアクション(例:{type:Change_Main_Item, itemId:5}
)は、減速機の状態の1つのプロパティのみを更新します(例:mainItemId
)。Reduxコンポーネントが状態変更時にサブスクライブする方法
My Component AとBはこの状態の変化に反応する必要があります:ローディングインジケータの表示、追加データの取得、および結果の表示。シーケンシャルアクションは、いくつかの非同期アクションライブラリを介して行うことができますが、ディスパッチ非同期アクションはどこに配置する必要がありますか?明らかに、コンポーネントAとBの減速機で非同期アクションをディスパッチできません。元のアクションを非同期に変更して、コンポーネントに必要なリクエストを行うこともできません。
これを達成する正しい方法は何ですか?
Redux-sagaを使ってdoSomethingに非同期要求を追加できますか?このようなもの? 'function * doSomething(){constデータ= yieldコール(Api.fetchData、action.payload.mainItemId); yield put({type: "DATA_FETCH_SUCCEEDED"、data:data}); } ' 次に、sagaComponentAを作成します: 'yield takeEvery(" Change_Main_Item "、doSomethingA)'(コンポーネントBについても同じです) –
はい。Sagasはすべての副作用(非同期など)を管理するのに特に便利です。 – KornholioBeavis