刷新页面后保留url查询

时间:2017-06-14 00:26:29

标签: reactjs react-router query-string

在我的应用中,如果用户转到

http://localhost:3000/#/auth

默认情况下会显示登录页面。

当用户进入注册页面时,网址为

http://localhost:3000/#/auth?form=signup

但是,每当我刷新页面时,网址都会自动返回

http://localhost:3000/#/auth

用户现在可以看到登录页面。

有没有办法在刷新后保留网址查询?换句话说,如果用户在注册页面上并刷新,我想呈现注册页面而不是登录页面。

我正在使用react-router@3并使用hashHistory。这是路线

<Route path="/auth" component={Auth} />

1 个答案:

答案 0 :(得分:0)

我弄清楚我的问题是什么。刷新期间未清除查询字符串。我已根据用户是否登录顶级组件设置了重定向。

  _redirect(isLoggedIn) {
    let route = this.props.location.pathname.slice(1);

    if (isLoggedIn) {
      this.props.router.replace('/home');
    } else if (!isLoggedIn && !/auth/.test(route)) {
      this.props.router.replace('/auth');
    }
  } 

我的问题是else if条件,我没有检查路线是否包含auth。因此,如果用户未登录,则此函数将重定向到/auth并删除查询字符串。

  _redirect(isLoggedIn) {
    let route = this.props.location.pathname.slice(1);

    if (isLoggedIn && /auth/.test(route)) {
      this.props.router.replace('/home');
    } else if (!isLoggedIn && !/auth/.test(route)) { <== updated this line
      this.props.router.replace('/auth');
    }
  }