Conversation
jun-0411
left a comment
There was a problem hiding this comment.
๋๋ฌด ๋ฆ๊ฒ ํ์ธํด์ ์ฃ์กํฉ๋๋ค ใ ใ
1. useAuth ํจ์
์์ง ์ปค์คํ ํ ์ ์ฌ์ฉ๋ฒ์ด ์ต์ง ์์์โฆ ์ ์ ํ๊ฒ useAuth๋ฅผ ํ์ฉํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์์ง ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐฉ์์ ํ์ ์ด ์๋์ง๋ง, ๋ก๊ทธ์ธํ ์ ์ ์ ๋ณด๋ฅผ user ์ด๋ฆ์ผ๋ก ์ ์ฅํด ๋์์ด์!
// 1. user ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ๋ก ๊ฐ์ ธ์ต๋๋ค.
const { user, isLoggedIn, handleLogout } = useAuth();
// ... (์ค๋ต)
{/* avatar UI */}
{user?.photo ? (
<img src={user.photo} />
) : (
<span> {user?.name}๋</span>
)}
์ด๋ฐ ์์ผ๋ก ๋ง๋ค ์ ์์ ๊ฒ ๊ฐ์์.
2. ๋ก๊ทธ์ธ/ํ์๊ฐ์ ๋์์ธ ๋ณ๊ฒฝ
RootLayout.tsx ์ฝ๋์ ๋ฆฌํฉํ ๋ง์ ์งํํ๋ฉด์ ๋ก๊ทธ์ธ/ํ์๊ฐ์ ํ๋ฉด์ ๋์์ธ๋ ์ผ๋ถ ๊ฑด๋๋ฆฌ๊ฒ ๋์๋๋ฐ์, ํน์ ๋์์ธ์ด ์๋ํ์ ๋ฐ์์ ๋ฌ๋ผ์ก๋ค๋ฉด ๋ฐ๋์ ์์ ์์ฒญ ๋ถํ๋๋ฆฝ๋๋ค!
๋์์ธ์ ์์๋ก ๋ง๋ ๊ฑฐ๋ผ ๋ณ๊ฒฝํ์
๋ ๊ด์ฐฎ์ต๋๋ค ใ
ใ
๋์์ด๋๋ถ ์ค์๋ฉด ๋ค์ css ์์
ํ๋๊ฒ ์ด๋จ๊น์?
๊ธฐํ ์๊ฒฌ
type ์ ์ธ ๋ฐฉ์
ํน๋ณํ ์ด์ ๋ฅผ ๊ฐ์ง๊ณ type๊ณผ interface๋ฅผ ๊ตฌ๋ถํ๊ณ ์์ง๋ ์์์. ์ ๋ ํ๋๋ก ํต์ผํ๋๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค๊ณ ์๊ฐํฉ๋๋ค!
type์ผ๋ก ์ ์ธํ๋ฉด ์ ๋์จ ํ์
์ด๋ ํํ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ํฉ๋๋ค.
(e.g. type Status = "success" | "error" | "loading"; // ์ ๋์จ ํ์
)
interface๋ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ฌ๋ฌ ๋ฒ ์ ์ธํ๋ฉด ํ์ ์คํฌ๋ฆฝํธ๊ฐ ์๋์ ์ผ๋ก ํ๋๋ก ํฉ์ณ์ฃผ๋ ๊ธฐ๋ฅ์ด ์์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ํธ๋ฆฌํ๋ค๊ณ ํฉ๋. ์ฑ๋ฅ๋ ์กฐ๊ธ ๋ ์ข๋ค๊ณ ๋ ํ๋ค์?
์ฐพ์๋ณด๋๊น ๊ด์ต์ ์ผ๋ก interface๋ฅผ ์ฌ์ฉํ๊ณ , "๊ฐ์ฒด๋ interface๋ก, ๊ทธ ์ธ์ ์กฐํฉ ํ์ ์ type์ผ๋ก ์ ์" ์ด๋ฐ์์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค๊ณ ํฉ๋๋ค. ํธํ์ ์ชฝ์ผ๋ก ํต์ผ๋ง ํ๋ฉด ๋ ๊ฒ ๊ฐ์์!
๐ ์์ ๋ด์ฉ
RootLayout์ ๋ฆฌํฉํ ๋งํ์์ต๋๋ค. ๊ณตํต์ ์ธ ํ๋ฉด ๋ฐฐ๊ฒฝ์, ํฌ๊ธฐ ๋ฑ์ ๋ ์ด์์์ผ๋ก ๋๊ธฐ๊ณ , ๊ฐ ๋ผ์ฐํธ์์๋ ํ๋ฉด ๋ด์ ์์ ๋ฐฐ์น๋ง ๊ด๋ฆฌํ๋๋ก ํ์ต๋๋ค.(์๋๋ ํ๋กํ ์ฌ์ง ๊ตฌํ๊น์ง ํ๋ ค๊ณ ํ์ผ๋โฆ ์ฌ์ง์ JSON์ผ๋ก ์ํ์ฐจํ๋ ๋ฐฉ์์ ์๋ ผํด๋ด์ผ ํ ๊ฒ ๊ฐ์์ ์ฐ์ ์ ๋ณดํด ๋ก๋๋ค.)
๐ธ ์คํฌ๋ฆฐ์ท
๐ ๋ฆฌ๋ทฐ ์๊ตฌ์ฌํญ
useAuth๋ฅผ ํ์ฉํ๊ณ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.RootLayout.tsx์ฝ๋์ ๋ฆฌํฉํ ๋ง์ ์งํํ๋ฉด์ ๋ก๊ทธ์ธ/ํ์๊ฐ์ ํ๋ฉด์ ๋์์ธ๋ ์ผ๋ถ ๊ฑด๋๋ฆฌ๊ฒ ๋์๋๋ฐ์, ํน์ ๋์์ธ์ด ์๋ํ์ ๋ฐ์์ ๋ฌ๋ผ์ก๋ค๋ฉด ๋ฐ๋์ ์์ ์์ฒญ ๋ถํ๋๋ฆฝ๋๋ค!