2017-08-07 3 views
0

これは、store.dispatchの戻り時間によって状態が既に変更されていることを保証していますか?その場合、ディスパッチコールの結果としてnewStateを返さないのはなぜですか?reduxストアへの変更は同期的に行われますか?

store.dispatch(action1()); 
store.dispatch(action2()); 

例私はその後、私はさらに多くの状態を変更するLOGEDINユーザー情報を使用する別のアクションを発射したい、アクション1でユーザーをログインします。ですから、action1が既に状態を正常に変更していない限り、action2は起動しません。

このように、time store.dispatchが返すことで、状態が既に変更されていることを確認できますか?

例リデューサ:

function reducer(state, action){ 
    // please ignore that i will mutate state, just for sake of simplicity of example. 
    if(action.type==='ACTION1'){ 
    state.user_id = action.payload; 
    return state; 
} 

if(action.type==='ACTION1'){ 
    state.value2 = state.user_id * action.whatEver; 
    return state; 
} 

    return state; 
} 

私の現在の保護は、私は、私はアクション2を発射USER_IDへの変更を監視するためにReact.componentを使用しているが、Reduxのアクションが同期しているならば、私はアクション1の直後にアクション2発射できるだけ減らします私の定型文。

答えて

1

はい、デフォルトではdispatch()は100%同期です。ミドルウェアは、アクションを傍受し、潜在的にそれらを遅延させたり、他の非同期的な方法で動作を変更することができます。しかしそれ以外には、dispatchが戻るまでには、ルートレデューサーの実行が終了し、現在の状態値がスワップアウトされ、サブスクライバに通知されたことが保証されます。

関連する問題