在我的应用中,如果用户转到
http://localhost:3000/#/auth
默认情况下会显示登录页面。
当用户进入注册页面时,网址为
http://localhost:3000/#/auth?form=signup
但是,每当我刷新页面时,网址都会自动返回
http://localhost:3000/#/auth
用户现在可以看到登录页面。
有没有办法在刷新后保留网址查询?换句话说,如果用户在注册页面上并刷新,我想呈现注册页面而不是登录页面。
我正在使用react-router@3
并使用hashHistory
。这是路线
<Route path="/auth" component={Auth} />
答案 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');
}
}