더북(TheBook)

15.8.4 로그아웃 기능 구현하기

이제 로그아웃 기능을 구현해봅시다. UserContext에 사용자 정보가 채워진 상태면 사용자 메뉴 화면에서 로그인/회원가입 메뉴 항목을 숨기고, 로그아웃 메뉴 항목을 보여줘야 합니다.

UserMenuScreen 컴포넌트를 다음과 같이 수정해보세요.

screens/UserMenuScreen.tsx

(...) 
import {clearToken} from '../api/client';
import {useUserState} from '../contexts/UserContext';

function UserMenuScreen() {
  const navigation = useNavigation<RootStackNavigationProp>();

  const [user, setUser] = useUserState();
  const onLogin = () => navigation.navigate('Login');
  const onRegister = () => navigation.navigate('Register');
    const onLogout = () => {
    setUser(null);
    clearToken();
  };

  return (
    <View>
      {user ? (
        <MenuItem name="로그아웃" onPress={onLogout} />
      ) : (
        <>
          <MenuItem name="로그인" onPress={onLogin} />
          <MenuItem name="회원가입" onPress={onRegister} />
        </>
      )}
     </View>
  );
}

export default UserMenuScreen;
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.