在 react-redux 和 redux-saga 中,异步调用成功后转换到新路由的正确方法是什么?
in react-redux and redux-saga what's a proper method of transitioning to a new route after an async call succeeds?
我正在使用 react、redux、redux-saga 和 react-router-redux。我正在寻找一种 'right' 在异步调用成功后转换到新路由的方法。
例如,用户提交订单并被重定向到感谢页面。在幕后,我们
- 当前路线是
orders/new
dispatch(submitOrder())
submitOrder()
saga 运行,异步网络调用
- apireturns成功,
SUBMIT_ORDER_SUCCESS
行动派发
此时我想过渡到orders/:orderId/complete
。
where/how 是正确的做法吗?
使用 OrderFormContainer.componentWillReceiveProps()
钩子是可能的,检查像 nextProps.submitDidSucceed
这样的 bool,然后调用一个转换动作——但这很脆弱,感觉根本是错误的。
您可以在 saga 中使用 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
我正在使用 react、redux、redux-saga 和 react-router-redux。我正在寻找一种 'right' 在异步调用成功后转换到新路由的方法。
例如,用户提交订单并被重定向到感谢页面。在幕后,我们
- 当前路线是
orders/new
dispatch(submitOrder())
submitOrder()
saga 运行,异步网络调用- apireturns成功,
SUBMIT_ORDER_SUCCESS
行动派发
此时我想过渡到orders/:orderId/complete
。
where/how 是正确的做法吗?
使用 OrderFormContainer.componentWillReceiveProps()
钩子是可能的,检查像 nextProps.submitDidSucceed
这样的 bool,然后调用一个转换动作——但这很脆弱,感觉根本是错误的。
您可以在 saga 中使用 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