주요 기능 | Header - itsyuna/Foot-Salon GitHub Wiki

Header

Firebase와 연동하여 로그인 상태 확인

로그인 상태 확인 후 User store에 있는 Login dispatch 활성화


✔️ Login/Logout 버튼

✔️ Nickname 표시

✔️ 새로고침 시 로딩중 - Spinner 아이콘 활성화


💻 Code

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]); 
  ...

🖥 View

Image
🔻 Header Header

🔻 Spinner
새로고침_Spinner

⚠️ **GitHub.com Fallback** ⚠️