๋ฌธ์ ์ํฉ
Firebase์ Auth ๊ธฐ๋ฅ์ ์ด์ฉํด ์ ์ ์ ํ๋กํ ์ ๋ณด๋ฅผ ๋ฐ์์ DisplayName
์ ์
๋ฐ์ดํธํ๋ ค๊ณ ํ๋ค. ์ฒซ ๋ฒ์งธ ์
๋ฐ์ดํธ๋ ์ ๋๋ก ๋์ง๋ง, ๋ ๋ฒ์งธ๋ถํฐ๋ ์๋ ๊ฐ์ ์๋ฌ๋ฅผ ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
์ต์์ App.js ํ์ผ์์ refreshuser
๋ผ๋ ๋ฉ์๋๋ฅผ ๋๊ณ , ํ๋กํ ์ ๋ณด๋ฅผ ์
๋ฐ์ดํธํ ๋๋ง๋ค ์ด๋ฅผ ๋ฐ๋ก ๋ฐ์ํ ์ ์๊ฒ firebase.auth
๋ก๋ถํฐ currentUser
๋ฅผ ๋ฐ์์ค๊ณ ์์๋ค. ์ฌ๊ธฐ๊น์ง๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง, ์ด๋ฅผ Object.assign({}, user))
๋ก ๋ณต์ฌํ ๊ฐ์ฒด๋ฅผ ๋ฐ์์ค๋ ๊ณผ์ ์์ enumerable ์์ฑ์ธ ๋ฉ์๋ updateProfile
์ ๋ณต์ฌํด์ค์ง ๋ชปํ๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์ ์ ๊ฐ ํ๋กํ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ฒซ ๋ฒ์งธ ์์ ์์๋ ์ ๋๋ก ์๋ํ์ง๋ง, refreshuser
๋ฉ์๋๋ฅผ ์คํํ ์ดํ๋ถํฐ๋ UserObject๋ก๋ถํฐ ํด๋น ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ ๊ฒ์ด๋ค.
์ฝ๋
// App.js
import { autService } from 'fBase';
function App() {
const [userObj, setUserObj] = useState(null);
// ....
const refreshuser = () => {
const user = authService.currentUser;
// setUserObj(Object.assign({}, user)); (*)
setUserObj({
displayName: user.displayName,
uid: user.uid,
updateProfile: (args) => user.updateProfile(args)
});
}
}
refreshuser
๋ prop์ผ๋ก ์ ๋ฌ๋์ด์, Profile.js์์ ์๋์ฒ๋ผ ์ฐ์ธ๋ค.
// Profile.js
const onSubmit = async (e) => { // profile update๋ฅผ ์ํ Form์ onSubmit์ผ๋ก ๋ค์ด๊ฐ๋ ๋ถ๋ถ
e.preventDefault();
if (newDisplayName === '') {
setError('Name can\'t be empty');
}
if (userObj.displayName !== newDisplayName) {
try {
await userObj.updateProfile({
displayName: newDisplayName
});
refreshuser(); // refreshuser๊ฐ ์ฐ์ด๋ ๋ถ๋ถ
} catch (err) {
console.log(err)
}
}
}
Object.assign()
The
Object.assign()
method copies all enumerable own properties from one or more source objects to a target object. It returns the target object.
from MDN