๐ค ์ง๋ฌธ: children vs <Outlet /> ์ฐจ์ด๊ฐ ๋ญ๊ฐ์?
๋ ๋ค **โ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ํ์ด์ค๋ค(๋ ๋๋งํ๋ค)โ**๋ ์ ์์๋ ๊ฐ์ง๋ง, **โ๋๊ฐ ๋ด์ฉ์ ๊ฒฐ์ ํ๋๊ฐ?โ**๊ฐ ๋ค๋ฆ ๋๋ค.
1. children (AuthLayout) = โ์ก์โ ๐ผ๏ธ
-
๋ฐฉ์: ์ง์ ๋ผ์ ๋ฃ๊ธฐ (Component Composition)
-
์ฃผ์ฒด: **๋ถ๋ชจ ํ์ด์ง(SigninPage)**๊ฐ ๊ฒฐ์ ํจ.
-
์ค๋ช :
SigninPage์์์<AuthLayout>์ ์ฐ๋ฉด์, ๊ทธ ์ฌ์ด์ ํผ์ ๋ผ์ ๋ฃ์์ฃ ?TypeScript
// SigninPage๊ฐ ์ง์ ๋งํจ: "AuthLayout ์ก์ ์์ ์ด <form>์ ๋ฃ์ด์ค!" <AuthLayout> <form>...</form> </AuthLayout> -
์ฉ๋: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ๊ป๋ฐ๊ธฐ(๋ชจ๋ฌ, ์นด๋, ๋ ์ด์์ ๋ฑ)๋ฅผ ๋ง๋ค ๋ ์๋๋ค.
2. <Outlet /> (MainLayout) = โ์ฝ์ผํธ/๊ตฌ๋ฉโ ๐
-
๋ฐฉ์: ๋ผ์ฐํ ์ ์ํ ์ฃผ์ (Router Outlet)
-
์ฃผ์ฒด: **URL(์ฃผ์์ฐฝ)**๊ณผ **App.tsx(๋ผ์ฐํฐ)**๊ฐ ๊ฒฐ์ ํจ.
-
์ค๋ช :
MainLayout์ฝ๋๋ฅผ ๋ณด๋ฉด ๊ทธ ์์ ๋ญ๊ฐ ๋ค์ด๊ฐ์ง ์ ํ ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ฅ ๊ตฌ๋ฉ(Outlet)๋ง ๋ซ๋ ค ์์ฃ .TypeScript
// MainLayout์ ๋ชจ๋ฆ: "๋ ๊ทธ๋ฅ ๊ตฌ๋ฉ๋ง ๋ซ์ด๋์๊ฒ. URL์ ๋ง๋ ์ ๊ฐ ์์ ๊ฝํ๊ฒ ์ง." <div className="content"> <Outlet /> </div>URL์ด
/์ด๋ฉดMainPage๊ฐ ๊ฝํ๊ณ ,/interview๋ฉดInterviewPage๊ฐ ๊ฝํ๋ ์์ ๋๋ค. -
์ฉ๋: ํ์ด์ง ์ ์ฒด์ ๊ตฌ์กฐ(ํค๋, ์ฌ์ด๋๋ฐ ๊ณ ์ )๋ฅผ ์ก๊ณ , ๋ด์ฉ๋ฌผ๋ง ๊ฐ์ ๋ผ์ธ ๋ ์๋๋ค.
์์ฝ:
-
children: ์ฝ๋๋ฅผ ์ง๋ ๋ด๊ฐ โ์ด ์์ ์ด๊ฑฐ ๋ฃ์ด!โ ํ๊ณ ์ง์ ๋ฃ๋ ๊ฒ. -
<Outlet />: URL ์ฃผ์์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ฐ๋๋ ํ๋ฉด์ด ๋ค์ด์ค๋ ๊ตฌ๋ฉ.