2017-04-19 97 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)); 
});