重定向工作,即使它不应该呈现
Redirect works even though it shouldn't render
我正在为我的 React 应用程序授权,如果用户已登录,我会从 /auth
路由进行重定向。注销后,重定向仍然有效,甚至认为 isLoggedIn
来自 Api 的值肯定会改变(用 console.log
确认)
我真的不知道为什么,所以我只尝试改变一些Api方法,isLoggedIn之前是一个object的get属性,现在它是函数。
function Auth(){
return (
<div>
<Header theme="light"/>
<Switch>
{Api.Auth.isLoggedIn() && <Redirect to={routes.home}/>}
<Route path={routes.login} component={Login}/>
<Route path={routes.register} component={Register}/>
</Switch>
</div>
);
}
Api:
isLoggedIn() {
console.log(this._token, !!this._token); // test, returns false everytime, but redirect works...
return !!this._token;
},
logout(){
this._token = null;
this._axiosSetToken('');
try {
window.localStorage.removeItem('token');
} catch (e) {
console.error(e);
}
}
我还有一件事正在使用相同的登录检查(显示或现在的配置文件 link 和 header 中的头像,但它工作正常并且出现登录按钮。
F5(页面重新加载)后一切正常,无论我在注销之前或之后重新加载页面都没有关系 - 它会工作。
正如有人对我说的,通常你应该在注销后重新加载页面,如问题所述 - 重新加载后工作。
我正在为我的 React 应用程序授权,如果用户已登录,我会从 /auth
路由进行重定向。注销后,重定向仍然有效,甚至认为 isLoggedIn
来自 Api 的值肯定会改变(用 console.log
确认)
我真的不知道为什么,所以我只尝试改变一些Api方法,isLoggedIn之前是一个object的get属性,现在它是函数。
function Auth(){
return (
<div>
<Header theme="light"/>
<Switch>
{Api.Auth.isLoggedIn() && <Redirect to={routes.home}/>}
<Route path={routes.login} component={Login}/>
<Route path={routes.register} component={Register}/>
</Switch>
</div>
);
}
Api:
isLoggedIn() {
console.log(this._token, !!this._token); // test, returns false everytime, but redirect works...
return !!this._token;
},
logout(){
this._token = null;
this._axiosSetToken('');
try {
window.localStorage.removeItem('token');
} catch (e) {
console.error(e);
}
}
我还有一件事正在使用相同的登录检查(显示或现在的配置文件 link 和 header 中的头像,但它工作正常并且出现登录按钮。
F5(页面重新加载)后一切正常,无论我在注销之前或之后重新加载页面都没有关系 - 它会工作。
正如有人对我说的,通常你应该在注销后重新加载页面,如问题所述 - 重新加载后工作。