์๋ ํ์ธ์?
๋ฆฌ์กํธ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ์น ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋๋ฐ์. ๊ฐ๋ฐ ๊ฒฝํ์ด ์ฒ์์ธ์ง๋ผ ํ์๋ถ๋ค๊ป ๋๋ฌด๋ ์ ์ธ๋ฅผ ์ง๊ณ ์์ต๋๋ค..
์ ๊ฐ ์ค๋ ์ด์ผ๊ธฐ ํ๊ณ ์ ํ๋ ๊ฒ์, ๋ก๊ทธ์ธ ํ๋์ฝ๋ฉ์ ํ๋ ๊ณผ์ ์ธ๋ฐ์.. ์ ๋ง ์ฌ์ด ๊ฑฐ์ง๋ง ์ ์๊ฒ๋ ์ด๋ ค์ ๋,, ๊ทธ๋์ ์ดํ์ด๋ ํด๊ฒฐํ์ง ๋ชปํ๋ ๊ฑด๋ฐ ๋๋์ด ํด๊ฒฐํ์ต๋๋ค.
์ํํด์ผ ํ ๊ณผ์ : ๋ก๊ทธ์ธ ์ , ํ์ ์ํ์ ๋ฐ๋ผ ํค๋๋ฅผ ์์ ํ๋ ๊ฒ. ๋ก๊ทธ์ธ ์ ์ผ ๊ฒฝ์ฐ, "๋ก๊ทธ์ธ" ํ ์คํธ ๋์ฐ๊ณ ํด๋ฆญํ๋ฉด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋์ด๊ฐ๊ธฐ / ๋ก๊ทธ์ธ์ ์๋ฃํ์ ๊ฒฝ์ฐ, ํ๋กํ ์์ด์ฝ๊ณผ ํจ๊ป username์ ๋์์ผ ํ์ต๋๋ค..
์ ์์ ๊ฒฝ์ฐ ์์ํ์ง๋ง, ํ์์์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค.

์ผ๋จ, username์ ๊ฐ์ด ๋์ด์ฌ ๊ฒฝ์ฐ๋ฅผ '๋ก๊ทธ์ธ์ด ๋ ์ํ'๋ก ์ธ์งํ๊ฒ ํ์ฌ LoginComponent๋ฅผ ๋์๋๋ค. ๋์ด์ค์ง ์์ผ๋ฉด(null) NotLoginComponent๋ฅผ ๋์๋๋ค.
//Header.tsx
const [user, setUser] = useState<LoginProps | null>(null);
{/*๋๋จธ์ง ์ฝ๋๋ค*/}
{user !== null ? (
<LoginComponent user={user} onClick={handleLoginClick} />
) : (
<H.LogoutText><NotLoginComponent onClick={handleLoginClick} /></H.LogoutText>
)}
์ฒ์์๋ ๋๋ฌด ์ด๋ ต๊ฒ ์๊ฐํด์, recoil ๋ถ๋ถ์ LoginState๋ AuthProvider๋ฅผ ๊ณ ์ณค์๋๋ฐ์.. ์ฌ์ค ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋๋ฌด ๊ฐ๋จํ์ต๋๋ค!
๊ทธ๋ฅ ํค๋๋ฅผ ์ ์ํ ๋ถ๋ถ์ LoginProps๋ฅผ ๋ฃ์ด์ฃผ๊ณ ์์ username๊ณผ password๋ฅผ ์ง์ ํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด์ ๋ก๊ทธ์ธ ๋ฒํผ์ด ์๋, ์์ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋ง๋ค์ด์ handelsubmit ํจ์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
const testUser: LoginProps = {
username: 'testuser',
password: 'testpassword',
};
์ค์ ๋ก๊ทธ์ธ์ ๊ตฌํํ ๋ฒํผ์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋, ์ค์ ๊ตฌํํด๋์๋ ๋ก๊ทธ์ธ ๋ก์ง์ ๋ ๋ณต์กํ๊ธฐ ๋๋ฌธ์, '๋ก๊ทธ์ธ ์ํ๋ฅผ ๋ง๋ค๊ธฐ ์ํด' ๊ฑฐ์ณ์ผ ํ๋ ๊ด๋ฌธ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ค์๊ณผ ๊ฐ์ด ์์ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด setUser๋ฅผ ์ธ์งํ์ฌ, username์ null์ด ์๋ ๊ฐ์ด ๋ค์ด์ค๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
const handleLoginSimulation = () => {
// ํ
์คํธ์ฉ ์ฌ์ฉ์ ์ ๋ณด๋ก ๋ก๊ทธ์ธ ์๋ฎฌ๋ ์ด์
setUser(testUser);
};
const handleLogoutSimulation = () => {
// ๋ก๊ทธ์์ ์๋ฎฌ๋ ์ด์
setUser(null);
};
๊ทธ๋ฆฌ๊ณ ๋์ button Component๋ฅผ ์ถ๊ฐํฉ๋๋ค.
<LoginComponent user={user} onClick={handleLoginClick} />
) : (
<H.LogoutText><NotLoginComponent onClick={handleLoginClick} /></H.LogoutText>
)}
<button onClick={handleLoginSimulation}>๋ก๊ทธ์ธ ์๋ฎฌ๋ ์ด์
</button>
<button onClick={handleLogoutSimulation}>๋ก๊ทธ์์ ์๋ฎฌ๋ ์ด์
</button>
์ด๋ ๊ฒ ์คํํ๋ฉด ๋ก๊ทธ์ธ ์ํ๋ฅผ ํ๋์ฝ๋ฉ์ ํตํด ๋ง๋์ค ์ ์์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
'Memo' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋์์ด๋๊ฐ ๊ฐ๋ฐ์ ๋ชจ์์ ๊ฐ์ ํ ์ด์ (0) | 2025.04.21 |
|---|---|
| 0414, 0415 - 10์๊ฐ ์์ ๊ธฐ๋ก (0) | 2025.04.15 |