2017-08-07 42 views
0

si它保證時間store.dispatch返回,狀態已經改變了嗎?如果是這種情況,那麼爲什麼不作爲調度調用返回newState?確實發生了與redux store同步的更改嗎?

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

一個例子,我將在動作1登錄用戶,那麼我想火將使用LOGEDIN用戶信息來進一步改變狀態的另一個動作。所以我想確保action2不會觸發,除非action1已經成功改變了狀態。

所以,按時間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; 
} 

我目前的保護是我使用React.component監視更改user_id說明,然後我火1動作,但如果Redux的操作是同步的話,我可以動作1後直接觸發動作2,只是減少我的樣板。

回答

1

是的,默認dispatch()是100%同步的。中間件可以攔截行爲並可能延遲它們或以其他一些異步方式修改行爲。但是,除此之外,在dispatch返回時,可以保證根減速器已經完成運行,當前狀態值已被換出,並且已經通知了用戶。

相關問題