[英]Firebase Auth user is logged out on every page refresh - React
每次刷新頁面時,用戶都會在身份驗證后返回登錄屏幕。 我正在使用 onAuthStateChanged 偵聽器,但是,在刷新頁面后,它就像沒有經過身份驗證的用戶一樣開始。
const dispatch = useDispatch();
const currentUser = useSelector((state) => state.user.value);
useEffect(() => {
auth.onAuthStateChanged((user) => {
if (user) {
dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
console.log("user", user.email);
}
});
}, []);
return currentUser.email ? <LoggedIn /> : <Welcome />;
}
const dispatch = useDispatch();
const currentUser = useSelector((state) => state.user.value);
useEffect(() => {
auth.onAuthStateChanged((user) => {
if (user) {
dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
console.log("user", user.email);
}
});
}, [currentUser]);
return currentUser?.email ? <LoggedIn /> : <Welcome />;
}
也許,這會有所幫助。 只需將 currentUser 添加到第二個參數數組
我知道onAuthStateChanges()
方法是異步的。 所以只需在這個方法中移動重定向。
const dispatch = useDispatch();
const currentUser = useSelector((state) => state.user.value);
useEffect(() => {
auth.onAuthStateChanged((user) => {
if (user) {
dispatch(setCurrentUser({ email: user.email, uid: user.uid }));
console.log("user", user.email);
openRoute(<LoggedIn />)
return
}
openRoute(<Welcome />)
});
}, []);
}
每當 auth state 更改時,此 function 就會觸發,因此如果您注銷,您想返回登錄頁面,這種方式將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.