const [newDisplayName, setNewDisplayName] = useState(userObj.displayName);
const onSubmit = async (event) => {
event.preventDefault();
if (userObj.displayName !== null) {
await updateProfile(authService.currentUser, {
displayName: newDisplayName,
});
refreshUser();
}
};
const [userObj, setUserObj] = useState(null);
useEffect(() => {
onAuthStateChanged(authService, (user) => {
if (user) {
setIsLoggedIn(true);
setUserObj({
displayName: user.displayName,
uid: user.uid,
updateProfile: (args) => user.updateProfile(args),
});
} else {
setIsLoggedIn(false);
}
setInit(true);
});
}, []);
const refreshUser = () => {
const user = authService.currentUser;
setUserObj({
displayName: user.displayName,
uid: user.uid,
updateProfile: (args) => user.updateProfile(args),
});
};
- 프로필을 업데이트 할 때는 updateProfile() 함수를 사용한다
- 프로필네임 변경 후 새로고침 없이 바로 변경하기 위하여 기존의 setUserObj(user)를 간단한 객체로 변경한다. user는 복잡하기 때문에 리랜딩이 되지 않음