NextJS에서 컴포넌트로 웹사이트 부분 분리하기

이전 강의에서는 사이트 부분의 텍스트를 레이아웃 파일에 직접 작성했습니다:

app/layout.jsxexport default function RootLayout({children}) {
  return (
    <html lang="en">
      <body>
        <header>
          header
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}

그러나 사이트 부분에 많은 코드와 텍스트가 포함된 경우에는 이 방법이 불편할 수 있습니다. 따라서 일반적으로 사이트 부분은 별도의 컴포넌트 파일로 분리합니다.

예를 들어, 사이트 헤더를 별도의 컴포넌트로 분리해 보겠습니다. 해당 파일을 생성합니다:

comp/header/header.jsxexport default function Header() {
  return <>
    header
  </>;
}

레이아웃 파일에 컴포넌트를 임포트합니다:

app/layout.jsximport Header from '@/comp/header/header.jsx';

export default function RootLayout({children}) {
  
}

컴포넌트 이름을 가진 태그를 사용하여 컴포넌트의 텍스트를 출력합니다:

app/layout.jsximport Header from '@/comp/header/header.jsx';

export default function RootLayout({children}) {
  return (
    <html lang="en">
      <body>
        <header>
          <Header />
        </header>
        <main>
          {children}
        </main>
        <footer>
          footer
        </footer>
      </body>
    </html>
  );
}
Задание 1

사이트 헤더와 푸터를 별도의 컴포넌트로 만들어 보세요.