Redux:异步和同步调度

时间:2016-03-17 19:28:16

标签: reactjs redux

我的react / redux应用程序中有一个多页用户注册表单。

当用户点击“下一页”时,它会调度一个调用来更新本地redux商店(而不是服务器)中的用户个人资料。

当他们点击最后一页上的“提交”时,我目前有一个点击处理程序:

clickHandler: function(formData) {

  dispatch(updateProfileInStore(formData);

  dispatch(saveProfileToServer());
}

我的问题是:在调用第二个调度之前,我能100%确定具有我的用户配置文件的Redux商店是否会更新?

我担心在某些情况下,可能会在添加表单数据的最后一页之前将配置文件写入我的数据库

2 个答案:

答案 0 :(得分:2)

不保证。您可以做的是传递saveProfileToServer新表单数据使其更新状态并将更新的表单数据发送到服务器。

根据react documentation

  

setState()不会立即改变this.state但会创建一个   待定状态转换。 ...... 没有   保证调用setState和调用的同步操作   为了提高性能而受到批评。

答案 1 :(得分:0)

在此处添加同步行为的唯一方法是使用redux thunk或sagas。一个redux thunk返回了可以解决的承诺,并且在sagas中,我们可能必须注意updateProfileInStore调度的成功操作,该操作需要调用saveProfileToServer。