另一种很好的方法来做到这一点。我从这个 Udemy 课程中学到了这一点,我 100% 推荐它。
在组件(您要提交的表单)内部,放置此表单提交事件处理程序,该处理程序将调用该操作。
submit(values) {
this.props.xxxActionCreator(() => {
this.props.history.push("/");//history is provided by react-route, .push("/") will direct app back to root path.
});
}
render() {
<form onSubmit={this.submit.bind(this)} >
.... </form>
在动作创建者里面,把这个
export default function xxxAction(callback) {
const request = axios.get('...url').then(() => callback()); //here the function (callback) that was passed into this.props.xxxActionCreator() will be invoked.
//.then() is provided by promise. This line of code means the callback (which redirects you to the root path) will be invoked, once the promise (async) is resolved.
return { type: SOME_ACTION, payload: XXX };
GitHub demo在这里你可以找到相关代码和整个项目。由伟大的老师斯蒂芬·格里德(Stephen Grider)亲切介绍!
这是一种不会将重定向放入状态树的方法。