NextJs (3) layout.tsx

์ฑ„์˜๋ฏผยท2024๋…„ 2์›” 14์ผ

๐Ÿ“š Layouts

๐Ÿ’ก ๋ชจ๋“  ํŽ˜์ด์ง€์— ์ ์šฉ๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” Layout

ex : ๋งŒ์•ฝ nextjs์—์„œ About-us ํŽ˜์ด์ง€๋ฅผ ๋ผ์šฐํŒ… ํ•˜๊ณ  ์‹ถ์„ ๋•Œ?

    1. nextjs๋Š” ์šฐ์„ ์ ์œผ๋กœ Layout ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐ.
    1. ๊ทธ ํ›„ export default ์ปดํฌ๋„ŒํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋ Œ๋”๋ง ํ•จ.
    1. ๋งˆ์ง€๋ง‰์œผ๋กœ About-us URL์„ ํ™•์ธํ•˜๊ณ  ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋ง ํ•จ.
// layout.tsx
export default function Layout({ children }: { children: React.ReactNode }) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  );
}

// about-us ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ๋ฐฉ์‹
<Layout>
  <About-us> // ์œ„ layout ํ•จ์ˆ˜์— children์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„ (๋‚ด๋ถ€์— ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ๋“ค์€ ๋ฆฌ์•กํŠธ์— ์˜ํ•ด ์ž๋™์œผ๋กœ children์ด๋ผ๋Š” props๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋จ.)
<Layout>  
  • layout.tsx๋Š” /app ๊ฒฝ๋กœ์— ๋ฃจํŠธ ์„ธ๊ทธ๋จผํŠธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ /app ๊ฒฝ๋กœ ๋‚ด์— ๋‹ค๋ฅธ ํด๋”๋“ค์—์„œ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ex) app/about-us ๋งŒ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ ˆ์ด์•„์›ƒ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์„ ๋•Œ
// app/about-us/layout.tsx 

export default function Layout({ children }: { children: React.ReactNode }) {
  return (
    <div>
      {children}
      &copy; Next JS is great.
    </div>
  );
}

  • ์ž์‹ ํด๋”๋“ค์€ ๋ถ€๋ชจ ํด๋”์— ๋ ˆ์ด์•„์›ƒ์„ ์ƒ์†๋ฐ›๋Š”๋‹ค.
    • ex : app/about-us/company/sales/pages.tsx

  • ์œ„์—์„œ root.layout์˜ ๋„ค๋น„๊ฒŒ์ด์…˜๊ณผ, about-us.layout์˜ ์š”์†Œ๋“ค๊ณผ ๊ฐ™์ด ์ค‘๋ณต๋˜๋Š” ๋ ˆ์ด์•„์›ƒ๋“ค์€ ์„œ๋กœ ์ค‘์ฒฉํ•ด์„œ ์‚ฌ์šฉํ•จ.
profile
ํ•ญ์ƒ ์žฌ๋ฐŒ๋Š”๊ฒƒ์„ ์ฐพ์•„ ํ—ค๋งค๋Š” ํ˜ธ๋ž‘์ด๋  ๋– ๋Œ์ด;

0๊ฐœ์˜ ๋Œ“๊ธ€