2017-04-25 196 views
1

我有一个react/redux应用程序,我有以下挑战。当我点击一个按钮时,我想保存表单数据,并且如果在后端发生验证错误,我想显示消息并重新定向。React/redux - Onclick对减速器的反应

在我的组件我有这个功能

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

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

现在的操作使用调度调用减速机,我可以确认减速器被调用。我使用的动作类型和我的动作类型使用开关的情况下:在doSubmit

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

现在我想是这样的:

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

所以,只有保存对象时是成功的重定向完成。

我该怎么做?

回答

0

你可以只打开数据sendMyObject回报:

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

对于这个工作,你的承诺sendMyObject需要解决saved或其他一些信息,告诉下一个诺言链中的它是否是成功的。