在 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/: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