我有一个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') } )
因此,只有在保存对象成功时才会重定向。
我该怎么做?
答案 0 :(得分:0)
你可以打开数据sendMyObject
返回:
return actions.checkAuthentication()
.then(actions.sendMyObject(myObject, data) )
.then((saved) => {
if (saved) {
return linkUtils.openRoute('nextUrl');
} else {
// something else
}
});
为了实现这一目标,您的承诺sendMyObject
需要解决saved
或其他一些信息,告知链中的下一个承诺是否成功。