Redux saganoobはこちら。
APIサーバーからreduxストアの初期状態をロードするsagaを作成する必要があります。
これには、getCurrentUser
とgetGroups
の2つの非同期サガの使用が含まれます。
これらのajaxリクエストを並行して発行し、GET_CURRENT_USER_SUCCESS
アクションとGET_GROUPS_SUCCESS
アクションを待ってから、UIに反応コンポーネントをレンダリングするタイミングを通知するpageReady
アクションを発行する必要があります。
私はハッキーな解決策を思いついた:
function * loadInitialState () {
yield fork(getCurrentUser)
yield fork(getGroups)
while (true) {
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield take([
actions.GET_GROUPS_SUCCESS,
actions.GET_CURRENT_USER_SUCCESS
])
yield put(actions.pageReady())
}
}
このコードの問題は、何らかの理由でGET_GROUPS_SUCCESS
が2回発行された場合、pageReady
アクションが早期に呼び出されることです。
ReduxsagaにGET_GROUPS_SUCCESS
とGET_CURRENT_USER_SUCCESS
が発生するのを待つにはどうすればよいですか少なくとも1回は任意の順序で?
all
効果 が欲しいと思います
function * loadInitialState () {
// start loading state...
yield all([
take(actions.GET_GROUPS_SUCCESS)
take(actions.GET_CURRENT_USER_SUCCESS)
]);
yield put(actions.pageReady())
}