Closed seoohyeon closed 1 year ago
Firebase에서 사용자 정보를 응답 받기 전에 화면에 렌더링 하려 시도하기 때문입니다.
문제 해결을 위해 로딩(isLoading) 상태를 추가해 관리해야 합니다.
const [isLoading, setIsLoading] = useState(true);
// 사용자(user) 정보가 업데이트 될 때마다 이펙트 콜백
useEffect(() => {
// 사용자 정보가 존재하면 로딩 상태를 false로 변경
if (user) {
setIsLoading(false);
}
}, [user]);
isLoading
상태가 true
인 동안에는 로딩 스피너를 화면에 표시해 사용자에게 로딩 중임을 안내합니다.
if (isLoading) {
return <div role="alert"> 사용자 정보 로딩 중... </div>;
}
수정이 반영되면 아래 화면처럼 데이터 응답 이후에 정상적으로 페이지가 렌더링 됩니다. 😀
MyPage.tsx 컴포넌트 코드만 수정 했으므로 아래 코드를 복사/붙여넣기 한 후 확인해보세요.
질문 작성자
김서현
문제 상황
242 이슈 답변에 따라 코드를 수정해보았으나,
데이터를 firebase에서 가져오는 과정에서 처음에 undefined가 떠서 에러가 뜨는 것 같아 질문을 남깁니다.
프로젝트 저장소 URL
https://github.com/React-Project-lab5/React-Project-lab5
develop브랜치
새로 수정된 src라 이거 받으셔서 하시면 됩니다!!
src파일 : src.zip
.env파일에 작성하시면 되는 코드를 아래에 적어드립니다. 로그인은 아이디 : eee@naver.com / 비번: aaaa1111 입니다.
VITE_API_KEY = AIzaSyD3qb4s7ciOVHXQTOYTZsoHs5gjBGQNDWY VITE_AUTH_DOMAIN = likelion-seo-first.firebaseapp.com VITE_PROJECT_ID = likelion-seo-first VITE_STORAGE_BUCKET = likelion-seo-first.appspot.com VITE_MESSAGE_SENDER_ID = 591976348589 VITE_APP_ID = 1:591976348589:web:9e41f2f24e6e1125d17f24
VITE_SERVICE_KEY=M4E1Vdrm%2Ba%2FjVfatJPdEbBibLbYBeDaGm7tgF%2BxisSinPYTEEBDkFgSO0gmqjAZGOzfrSffYbsOF3XshtdL6lg%3D%3D
환경 정보