【发布时间】:2021-12-20 17:24:39
【问题描述】:
我正在使用 localStorage 来保存登录时的用户数据。我已将其保存为“jwt_data”。 我在 saperate js 文件上创建了一个函数来检索该数据作为
export const auth = () => {
if(localStorage.getItem('jwt_data')){
return JSON.parse(localStorage.getItem('jwt_data'))
}else{
return false
}
}
我有一个导航栏组件,它可以与 做出反应。我想在用户注销后隐藏它并在我登录后显示。 我用代码作为
const auth_user = auth()
........
<>
{auth_user ? (// if logged in..... ) : (// if user is logged out........)
</>
确实奏效了。但问题是它不是被动的。我需要重新加载网站才能看到效果。
我也试过用其他的比如
const [auth_user, setAuth_user] = useState(false)
useEffect(() => {
if(auth()) {setAuth_user(true)}
else {setAuth_user(false)}
})
与之前的结果相同。 我不知道我错在哪里。其他人建议使用redux之类的东西,这对我的头脑和我的简单应用来说太复杂了。
我的 app.js 看起来像这样
import React from 'react';
import Nav from './Nav';
import Home from './Home';
import Login from './Login';
import Logout from './Logout';
function App() {
return (
<div className="App">
<Router>
<Router>
<Nav/>
<Routes>
<Route exact path="/home" element={<Home/>}/>
<Route exact path="/login" element={<Login/>}/>
<Route exact path="/logout" element={<Logout/>}/>
</Routes>
</Router>
</div>
);
}
登录后,我搬家了,这样做时,我想删除导航栏中所有仅显示已通过身份验证的内容,就像在这种情况下和一般其他情况下一样。
我在这里缺少什么吗? 感谢您的友好回答。
【问题讨论】:
标签: javascript reactjs local-storage