react-router-v4没有正确重定向

时间:2017-06-12 16:33:37

标签: reactjs react-router redux-thunk

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

一个例子是让我说我​​在localhost:3000 / signin,当我登录时,我希望用户被重定向到localhost:3000 / posts上的帖子页面。当我点击按钮时,我得到localhost:3000 / posts但该页面只停留在登录页面上。我必须点击刷新才能转到该URL。

**********

编辑:我也注意到,当我在浏览器中回击或向前时,它不会渲染,直到我点击刷新。那么这可能是其他一些问题?我正在使用react-router-v4。

这是我到目前为止的代码:

这是单击按钮时调用的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'));
      })
  }
}

2 个答案:

答案 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"/>

然后你走了!