【发布时间】:2017-07-30 18:42:46
【问题描述】:
在当前版本的 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 的函数重定向到购物车页面?
【问题讨论】:
-
只是从提供的最后一个解决方案和 GitHub 上 React Router 问题中的建议添加到这一点,使用
context手动传递你需要的东西是“不行的”。除非我是图书馆作者,否则不需要使用它。事实上,Facebook 建议不要这样做。 -
@Chris 你找到解决方案了吗?我需要推送到一个不同的组件,就像你在这里解释的一样
-
为什么我们不能使用 windows.location.href= URL?使用它来更改网址和重定向有什么问题吗?
-
@Shan 如果您使用 location.href,我相信您会丢失应用程序状态。它也不适合移动设备。
-
使用@Shan 的建议,例如( windows.location.href=("/") )在移动设备上的问题为零。按预期工作。 *在我的特定用例中丢失应用程序状态不是问题。
标签: reactjs react-router react-router-v4