[英]LocalStorage does not persist
我一直在嘗試將我的令牌保留在 localStorage 中,但每次我引用頁面時,該值都會變為未定義。
這是我來自App.tsx
的代碼。 我在我的項目中使用 redux,但堅持使用 redux 會引發大量類型錯誤。 這就是為什么我要使用本地存儲。
const [isLoggedIn, setIsLoggedIn] = useState('');
// @ts-ignore
const user = useAppSelector(state=>state.user.currentUser.token);
useEffect(()=>{
const getToken = localStorage.getItem("token");
if(getToken){
setIsLoggedIn(getToken)
}
},[])
useEffect(()=>{
localStorage.setItem("token", user)
},[user])
作為額外參考,這些是我的路線
<Route path="/userProfile" element={<UserProfile />} />
<Route path="/login" element={user ? <Navigate to="/" /> : <Login />} />
<Route path="/cart" element={<Cart />} />
<Route path="/" element={<Home />} />
<Route path="/product/:id" element={<SingleProduct />} />
到目前為止,我已經嘗試了所有我所知道的,但我仍然無法找出根本問題。
useEffect(()=>{
localStorage.setItem("token", user)
},[user])
您的問題來自上述useEffect
。 雖然它有依賴user
(它正在監聽user
狀態更改),但它在您第一次渲染組件時被調用。
我建議您應該為該useEffect
添加一個條件,如下所示
useEffect(()=>{
if(user) {
localStorage.setItem("token", user)
}
},[user])
這將幫助您防止使用未定義的user
值調用setItem
。
檢查用戶未定義
user && localStorage.setItem("token", user)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.