hooks/useRegister.ts

    import {useNavigation} from '@react-navigation/core';
    import {useMutation} from 'react-query';
    import {register} from '../api/auth';
    import {applyToken} from '../api/client';
    import {AuthError} from '../api/types';
    import {useUserState} from '../contexts/UserContext';
    import {RootStackNavigationProp} from '../screens/types';
    import authStorage from '../storages/authStorage';
    
    export default function useRegister() {
      const [, setUser] = useUserState();
      const navigation = useNavigation<RootStackNavigationProp>();
      const mutation = useMutation(register, {
        onSuccess: (data) => {
          setUser(data.user);
          navigation.pop();
          applyToken(data.jwt);
          authStorage.set(data);
        },
        onError: (error: AuthError) => {
          console.log(error);
          /* TODO: 구현 예정 */
        },
      });
      return mutation;
    }

    이제 인증 성공 시 데이터가 authStorage에 저장되어 앱을 재시작해도 상태를 유지할 수 있습니다.

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