주요 기능 | Header - itsyuna/Foot-Salon GitHub Wiki
Firebase와 연동하여 로그인 상태 확인
로그인 상태 확인 후 User store에 있는 Login dispatch 활성화
Header.tsx
const Header = () => {
// User의 Nickname과 Login 상태 가져오기
const userNickname = useAppSelector((state) => state.user.nickname);
const isLoggedIn = useAppSelector((state) => state.user.isLoggedIn);
const navigate = useNavigate();
const dispatch = useAppDispatch();
const loginOutHandler = () => {
if (isLoggedIn) {
if (window.confirm("정말 로그아웃 하시겠습니까?")) {
auth.signOut();
toast.success("See ya! ✋🏻");
}
} else navigate("/login");
};
useEffect(() => {
auth.onAuthStateChanged((user) => {
// User가 있을 때 (=로그인 시)
if (user) {
dispatch(
userActions.login({
userNickname: user.displayName,
userEmail: user.email,
userUid: user.uid,
})
);
setIsSpinnerOn(false);
// User가 없을 때 (=로그아웃 시)
} else {
dispatch(userActions.logout());
setIsSpinnerOn(false);
}
});
}, [dispatch]);
...
Image
🔻 Header

🔻 Spinner