2017-04-25 199 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或其他一些信息,告訴下一個諾言鏈中的它是否是成功的。