screens/RootStack.js

    import React, {useEffect} from 'react';
    import {createNativeStackNavigator} from '@react-navigation/native-stack';
    import SignInScreen from './SignInScreen';
    import WelcomeScreen from './WelcomeScreen';
    import {useUserContext} from '../contexts/UserContext';
    import MainTab from './MainTab';
    import {getUser, subscribeAuth} from '../lib/users';
    
    const Stack = createNativeStackNavigator();
    
    function RootStack() {
      const {user, setUser} = useUserContext();
    
    useEffect(() => {
      // 컴포넌트 첫 로딩 시 로그인 상태를 확인하고 UserContext에 적용
      const unsubscribe = subscribeAuth(async currentUser => {
        // 여기에 등록한 함수는 사용자 정보가 바뀔 때마다 호출되는데
        // 처음 호출될 때 바로 unsubscribe해 한 번 호출된 후에는 더 이상 호출되지 않게 설정
        unsubscribe();
        if (!currentUser) {
          return;
        }
        const profile = await getUser(currentUser.uid);
        if (!profile) {
          return;
        }
        setUser(profile);
      });
    }, [setUser]);
    
    (...)
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.