Reactjs 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 ********** 编辑:我还注意到,当我在浏览器中单击“后退”或“前进”时,它在单击“刷新”之前不会进行渲染。那么这可能

我已经将url更改为我想要的url,但我唯一能让它工作的方法是刷新页面,然后它转到url

例如,假设我在localhost:3000/signin上,当我登录时,我希望用户被重定向到localhost:3000/posts上的posts页面。当我点击该按钮时,我得到localhost:3000/posts,但该页面只是停留在登录页面上。我必须点击刷新,它才能进入那个URL

********** 编辑:我还注意到,当我在浏览器中单击“后退”或“前进”时,它在单击“刷新”之前不会进行渲染。那么这可能是另一个问题?我正在使用react-router-v4。
以下是我目前掌握的代码:

这是单击按钮时调用的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,但视图没有改变。我将组件包装在组件文件中。这是正确的方法吗?你有别的解决办法吗?