Reactjs react-router-v4未正确重定向
我已经将url更改为我想要的url,但我唯一能让它工作的方法是刷新页面,然后它转到url 例如,假设我在localhost:3000/signin上,当我登录时,我希望用户被重定向到localhost:3000/posts上的posts页面。当我点击该按钮时,我得到localhost:3000/posts,但该页面只是停留在登录页面上。我必须点击刷新,它才能进入那个URL ********** 编辑:我还注意到,当我在浏览器中单击“后退”或“前进”时,它在单击“刷新”之前不会进行渲染。那么这可能是另一个问题?我正在使用react-router-v4。Reactjs react-router-v4未正确重定向,reactjs,react-router,redux-thunk,Reactjs,React Router,Redux Thunk,我已经将url更改为我想要的url,但我唯一能让它工作的方法是刷新页面,然后它转到url 例如,假设我在localhost:3000/signin上,当我登录时,我希望用户被重定向到localhost:3000/posts上的posts页面。当我点击该按钮时,我得到localhost:3000/posts,但该页面只是停留在登录页面上。我必须点击刷新,它才能进入那个URL ********** 编辑:我还注意到,当我在浏览器中单击“后退”或“前进”时,它在单击“刷新”之前不会进行渲染。那么这可能
以下是我目前掌握的代码: 这是单击按钮时调用的on submit函数:
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'));
})
}
}
你能试试这个吗,这个应该有用
this.history.pushState(null, '/posts');
如果您使用的是browserHistory
this.context.router.push('/posts'); or browserHistory.push('/login');
一种方法是,在州里的某个地方,你有“isLoggedin”之类的东西。如果该项为false,则可以使用编辑框正常呈现登录路径以输入用户信息。当isLoggedIn in状态更改为true时,您将登录路径呈现为以下内容:
<Redirect to="/posts"/>
你走吧 这段历史没有定义。我使用的是react-router-v4或react-router-dom,这意味着我使用的是BrowserRouterdid,您可以尝试使用this.context.router.push('/posts');或browserHistory.push('/login');这两个都不起作用,我认为唯一可行的方法是如果我使用的是react路由器版本3,而我不是。我使用的是react-router dom或react-router版本4看到这个答案我并没有和他一样的问题。如果url显示为localhost:3000/signup,我可以手动刷新这些页面,或者当这个.props.history.push('/post')将url更改为localhost:3000/post时,我点击了刷新。这就是我必须在url中点击刷新或硬输入才能使其工作的问题。也就是说,请使用
withRouter
包装您的组件,看看这是否有帮助。它确实帮助了我,它仍然只是改变了url,但视图没有改变。我将组件包装在组件文件中。这是正确的方法吗?你有别的解决办法吗?