【发布时间】:2017-11-14 05:24:37
【问题描述】:
我已经将 url 更改为我想要的 url,但我可以让它工作的唯一方法是刷新页面,然后它转到 url。
假设我在 localhost:3000/signin 上,当我登录时,我希望用户被重定向到 localhost:3000/posts 上的帖子页面。当我单击按钮时,我得到 localhost:3000/posts 但页面只停留在登录页面上。我必须点击刷新才能访问该 URL。
**********
编辑:我还注意到,当我在浏览器中向后或向前点击时,它不会呈现,直到我点击刷新。所以这可能是其他问题?我正在使用 react-router-v4。
这是我目前的代码:
这是单击按钮时调用的提交函数:
onSubmit({email, password}) {
this.props.signinUser({email, password}, () => {
this.props.history.push('/posts');
});
}
这是登录用户操作:
export function signinUser({email, password}, cb) {
return function(dispatch) {
axios.post(`${ROOT_URL}/signin`, {email, password})
.then((response) => {
dispatch({type: AUTH_USER});
console.log(response);
localStorage.setItem('token', response.data.token);
cb();
})
.catch(() => {
dispatch(authError('bad login info'));
})
}
}
【问题讨论】:
-
我没有遇到和他一样的问题。如果 url 显示 localhost:3000/signup 或者我在 this.props.history 时点击刷新,我可以通过手动刷新来手动导航到这些页面.push('/post') 将 url 更改为 localhost:3000/post。这就是我必须在 url 中点击刷新或硬输入才能使其工作的问题。
-
话虽如此,用
withRouter包装你的组件,看看是否有帮助。它确实帮助了我 -
它仍然只是改变了 url 但视图没有改变。我将组件包装在组件文件中。这是正确的方法吗?
-
您还有其他解决方案吗?
标签: reactjs react-router redux-thunk