在当前版本的 React Router (v3) 中,我可以接受服务器响应并使用 browserHistory.push
转到相应的响应页面。但是,这在 v4 中不可用,我不确定处理此问题的适当方法是什么。
在这个例子中,使用 Redux, components/app-product-form.js 在用户提交表单时调用 this.props.addProduct(props)
。当服务器返回成功时,用户被带到购物车页面。
// actions/index.js
export function addProduct(props) {
return dispatch =>
axios.post(`${ROOT_URL}/cart`, props, config)
.then(response => {
dispatch({ type: types.AUTH_USER });
localStorage.setItem('token', response.data.token);
browserHistory.push('/cart'); // no longer in React Router V4
});
}
如何从 React Router v4 的功能重定向到购物车页面?
原文由 Chris 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在组件之外使用
history
方法。通过以下方式尝试。首先,使用 history 包 创建一个
history
对象:然后将其包装在
<Router>
中( 请注意,您应该使用import { Router }
而不是import { BrowserRouter as Router }
):从任何地方更改您的当前位置,例如:
UPD :你也可以在 React Router FAQ 中看到一个稍微不同的例子。