React / redux - Onclick对reducer的反应

时间:2017-04-25 13:44:24

标签: javascript reactjs redux

我有一个react / redux应用程序,我有以下挑战。当我单击一个按钮时,我想保存表单数据,如果在后端发生验证错误,我想显示和消息,否则重定向。

在我的组件中,我有这个功能

doSubmit = (data) => {
    const {actions, linkUtils, myObject} = this.props

    return actions.checkAuthentication()
      .then(actions.sendMyObject(myObject, data) )
        .then(linkUtils.openRoute('nextUrl'))
  }

现在该操作使用dispatch来调用reducer,我可以验证是否调用了reducer。我使用动作类型,并在动作类型上使用开关案例:

case types.SAVE_SUCCESS:
 return {
   ...state,
   save: true,
}
case types.SAVE_ERROR:
  return {
    ..state,
    saved: false,
    fieldErrors: action.payload.errors
}

现在在doSubmit中我想要这样的东西:

return actions.checkAuthentication()
 .then(actions.sendMyObject(myObject, data) )
  .then( if (saved) { linkUtils.openRoute('nextUrl') } )

因此,只有在保存对象成功时才会重定向。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

你可以打开数据sendMyObject返回:

return actions.checkAuthentication()
  .then(actions.sendMyObject(myObject, data) )
    .then((saved) => {
      if (saved) {
        return linkUtils.openRoute('nextUrl');
      } else {
        // something else
      }
    });

为了实现这一目标,您的承诺sendMyObject需要解决saved或其他一些信息,告知链中的下一个承诺是否成功。