我正在使用react,redux和redux-saga,以及react-router-redux。我正在寻找一种在正确的异步呼叫后转换到新路线的“正确”方式。
例如,用户提交订单并重定向到感谢页面。在幕后,我们orders/new
dispatch(submitOrder())
submitOrder()
saga运行,异步网络呼叫SUBMIT_ORDER_SUCCESS
操作已分派此时我想转换到orders/:orderId/complete
。
在哪里/如何做到这一点的正确方法?
使用OrderFormContainer.componentWillReceiveProps()
挂钩是可能的,检查像nextProps.submitDidSucceed
这样的bool然后调用转换操作 - 但这很脆弱并且感觉从根本上是错误的。
答案 0 :(得分:2)
您可以在传奇中使用push
动作创建者导航到新位置:
import { push } from 'react-router-redux';
//... your saga code
// api return success
yield put(SUBMIT_ORDER_SUCCESS); // your existing action
yield put(push('/orders/:orderId/complete')); // use push to redirect to desired location