2017-04-19 18 views
4

我正在開發一個應用程序,在發送數據到服務器之前,我們檢查字段是否爲空,並填充虛擬數據。ReactJs - 如何獲得更新的狀態,而在一個thunk的承諾

國家將數據發送到服務器之前:

state = { 
    title: '', 
    body: '' 
} 

我的調度功能:

this.props.dispatch((dispatch) => { 
    dispatch(initializeProcessForm()); 
    dispatch(processForm(state)); 
}); 

裏面initializeProcessForm我檢查,如果字段爲空,並適當地填補他們,但考慮到我們不應該發生變異狀態,我必須做一個新的狀態對象並返回。

在這裏,我失去了參考當前(新狀態功能完成後),當訊(processForm(州))提交到服務器時,它仍持有空白字段的舊數據。

如何解決這個問題而不改變狀態反應的方式?

我可以訪問新狀態的唯一方法是在Reduce內部進行一次調用,但是在處理成功或拒絕表單時,在調用Reducer之前會發生API調用。

回答

7

的終極版,thunk的傳遞給你的thunk第二個參數是的getState

this.props.dispatch((dispatch, getState) => { 
    dispatch(initializeProcessForm()); 
    const updatedState = getState(); 
    dispatch(processForm(updatedState)); 
});