我已将网址更改为我想要的网址,但我能让它工作的唯一方法是刷新页面然后转到网址。
一个例子是让我说我在localhost:3000 / signin,当我登录时,我希望用户被重定向到localhost:3000 / posts上的帖子页面。当我点击按钮时,我得到localhost:3000 / posts但该页面只停留在登录页面上。我必须点击刷新才能转到该URL。
这是我到目前为止的代码:
这是单击按钮时调用的on submit函数:
onSubmit({email, password}) {
this.props.signinUser({email, password}, () => {
this.props.history.push('/posts');
});
}
这是行动signinUser:
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'));
})
}
}
答案 0 :(得分:0)
can you try this, this should work.
this.history.pushState(null, '/posts');
if you are using browserHistory
this.context.router.push('/posts'); or browserHistory.push('/login');
答案 1 :(得分:0)
这样做的一种方法是在州的某个地方你有项目“isLoggedin”或类似的东西。如果该项为false,则通常使用编辑框呈现登录路径以输入用户信息。当isLoggedIn状态变为true时,您将登录路由呈现为以下内容:
<Redirect to="/posts"/>
然后你走了!