Today, What I learned?
์ด๋ฒ ํ๋ก์ ํธ์์๋ ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ์ ํค๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ ธ์ถํด์ผ ํ๋ ๊ธฐ๋ฅ์ด ์๋ค.
์ด ๋ถ๋ถ์ ๋ก์ง์ ์ด๋ป๊ฒ ์งค ๊ฒ์ธ ๊ฐ์ ๋ํ ์์ ๊ณ ์ฐฐ...
๊ตฌํํด์ผ ํ๋ ๋ถ๋ถ
๋ก๊ทธ์ธ์ด ๋์ด ์์ง ์๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ก๊ทธ์ธ ๋ฒํผ์ด ๋ณด์ด๋ ํค๋๋ฅผ,
๋ก๊ทธ์ธ์ด ๋์๋ค๋ฉด ๊ฒ์๊ณผ ๋ง์ดํ์ด์ง๋ก ๋ค์ด๊ฐ ์ ์๋ ์์ด์ฝ์ด ์๋ ํค๋๋ฅผ ๋ณด์ฌ์ฃผ์ด์ผ ํ๋ค.
์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ ํ๋ก์ ํธ์์๋ ํ์ด์ด๋ฒ ์ด์ค๋ฅผ ํตํด ๋ก๊ทธ์ธ์ด ์ด๋ฃจ์ด์ง๋ค.
์ฒซ ์๋
์ฒ์์๋ useState
๋ฅผ ์ด์ฉํด์ isLoggedIn
์ด๋ผ๋ boolean
๊ฐ์ ์ํ๋ก ๊ด๋ฆฌ๋ฅผ ํ๋ ค๊ณ ํ๋ค.
const [isLoggedIn, setIsLoggedIn] = useState<boolean>(false);
...
useEffect(()=>{
authService.onAuthStateChanged((user) => {
if (user) {
setIsLoggedIn(true);
} else {
setIsLoggedIn(false);
}
});
},[]);
...
{/* ๋น ๋ก๊ทธ์ธ ์ */}
{!isLoggedIn && (
<Button type="button" onClick={goToLogin}>
๋ก๊ทธ์ธ
</Button>
)}
{/* ๋ก๊ทธ์ธ ์ */}
{isLoggedIn && (
<Icons>
<SearchIcon />
<Link to={'/mypage'}>
<UserIcon />
</Link>
</Icons>
๊ทผ๋ฐ ์ฒ์์ false
๊ฐ ๊ธฐ๋ณธ์ด๋ค๋ณด๋ ๋ก๊ทธ์ธ์ด ๋์ด์๋๋ผ๋ ๋ก๊ทธ์ธ ๋ฒํผ์ด ๋ช ์ด ๋ณด์๋ค๊ฐ ์์ด์ฝ์ผ๋ก ๋ณ๊ฒฝ๋๋ ํ์์ด ์์ด์ ๋ณด๋ฅ...
๋ ๋ฒ์งธ ์๋
์ผ๋จ ํ์ฌ ์์ ์์ธ๋ฐ, ์ํ๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ฐ๋ก currentUser
๊ฐ ์๋ ์ง๋ฅผ ํ์
ํด์ ๋ ๋๋ง ํ๋ ๊ฒ์ด๋ค.
{/* ๋น ๋ก๊ทธ์ธ ์ */}
{!authService?.currentUser && (
<Button type="button" onClick={goToLogin}>
๋ก๊ทธ์ธ
</Button>
)}
{/* ๋ก๊ทธ์ธ ์ */}
{authService?.currentUser && (
<Icons>
<SearchIcon />
<Link to={'/mypage'}>
<UserIcon />
</Link>
</Icons>
์ผ๋จ ๋ฆฌ์กํธ๋ ๊ธฐ๋ณธ์ด SPA๋๊น ํ์ด์ง ์ด๋ ์์ ๋ฆ์ถฐ์ง๋ ๊ฒ ์์ด ๋ฐ๋ก๋ฐ๋ก ํค๋๊ฐ ๋ ๋๋ง ๋๊ธด ํ๋ค.
๋ฌธ์ ๋ ์๋ก๊ณ ์นจ ํ์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ๋ฒํผ ํค๋๊ฐ ๋์จ๋ค๋ ๊ฒ!..
(๋ค๋ฅธ ํ์ด์ง๋ก ๊ฐ๋ฉด ๋ค์ ๋ก๊ทธ์ธ ์ํ๋ก ๋์ค๊ธด ํ๋ค)
๊ฒฐ๋ก ์ ์ผ๋ก ์๋ก๊ณ ์นจ ํ์ ๊ฒฝ์ฐ์ ๋ก๊ทธ์ธ ์ํ ์ ์ง๊ฐ ํ์ํ ๊ฑด๋ฐ, ์ผ๋จ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ ์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅ๋๋ ๋ถ๋ถ์ ์ฝ๋๋ ๋ฃ์ด๋์๋ค.
setPersistence(authService, browserSessionPersistence)
.then(() =>
signInWithEmailAndPassword(authService, auth.email, auth.password),
)
.then(() => {
...
์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ ๊ฒ์ ์ด์ฉํด์ apiKey๋ฅผ ๋ฆฌ๋์ค์ ์ ์ฅํ๋ค๋๊ฐ.. ์ด๋ฐ ์๋๋ฅผ ํด๋ณผ ์๊ฐ์ด๋ค.
์์ง ์์ ํ ๋๋ ๊ฒ ์๋!..
++++
๋ฐ๋ก ๋ค์ ๋ .. ์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅํ ๊ฐ์ผ๋ก ์๋ก๊ณ ์นจ ํ์์ ํด๊ฒฐํ๋ค!
์ธ์
์คํ ๋ฆฌ์ง ์ฐ๋ ๊ฐ์ด ์ด ์ ๋ณด๋ฐ์ ์๊ธฐ ๋๋ฌธ์ key(0)
์ด๋ผ๋ ์ธ๋ฑ์ค๋ก ์ง์ ํด ์คฌ์ง๋ง, ํ์ด์ด๋ฒ ์ด์ค apikey๋ฅผ ๋ฃ์ด์firebase:authUser:ํ์ด์ด๋ฒ ์ด์ค API key:[DEFAULT]
๋ผ๋ ๊ฐ์ผ๋ก ํค๋ฅผ ์ง์ ํด์ ๊ฐ์ ธ์ฌ ์๋ ์๋ค.
// ๋ก๊ทธ์ธ ํ์ธ์ ์ํ ์ธ์
์คํ ๋ฆฌ์ง ํค ํ์ธ
const isLoggedIn = sessionStorage.key(0);
์๋ฌดํผ ์ธ์ ์คํ ๋ฆฌ์ง์ ์ ์ฅ์ด ๋์ด์๋๋์ ๋ฐ๋ผ ํค๋ ์์ด์ฝ ๋ถ๋ถ์ ๋ ๋๋ง ํด์ค๋ค.
{/* ๋น ๋ก๊ทธ์ธ ์ */}
{!isLoggedIn && (
<Button type="button" onClick={goToLogin}>
๋ก๊ทธ์ธ
</Button>
)}
{/* ๋ก๊ทธ์ธ ์ */}
{isLoggedIn && (
<Icons>
<SearchIcon />
<Link to={'/mypage'}>
<UserIcon />
</Link>
</Icons>
)}
...
์ด์ ์๋ก๊ณ ์นจ ํด๋ ํค๋ ๋ถ๋ถ์ด ์ ์ ์ง๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
Comment