NextJS에서 중첩 레이아웃 사용하기

알다시피, /app 폴더의 /layout.jsx 파일에 사이트의 기본 레이아웃이 위치합니다.

원한다면, 중첩된 폴더에서도 자체 레이아웃을 생성할 수 있습니다. 이 경우 페이지 콘텐츠는 먼저 중첩된 레이아웃에 삽입된 후, 결과적으로 얻어진 내용이 기본 레이아웃에 삽입됩니다.

실제로 해봅시다. 우리의 기본 레이아웃이 다음과 같다고 가정해 보겠습니다:

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

이제 /users 폴더의 모든 콘텐츠를 위한 중첩 레이아웃을 하나 더 만들어 보겠습니다:

app/users/layout.jsxexport default function UsersLayout({children}) {
  return (
    <div className="info">
      message for all users
    </div>
    <div className="content">
      {children}
    </div>
  );
}

보시다시피, 이 레이아웃에서는 페이지의 기본 태그들을 지정하지 않습니다. 이미 사이트의 기본 레이아웃에 존재하기 때문입니다.

또한 사용자를 표시하기 위한 콘텐츠 파일을 만들어 보겠습니다:

src/app/users/show/page.jsxexport default function User() {
  return <>
    <h1>User</h1>
    <p>
      user description
    </p>
  </>;
}

이러한 작업 후에 우리의 파일 구조는 다음과 같이 보일 것입니다:

이제 해당 URL로 접근하면, NextJS가 모든 것을 함께 조립하고 브라우저에서 다음과 같은 최종 HTML 코드를 얻을 수 있습니다:

html<html lang="en">
  <body>
    <header>
      header
    </header>
    <main>
      <div class="info">
        message for all users
      </div>
      
      <h1>User</h1>
      <p>
        user description
      </p>
    </main>
    <footer>
      footer
    </footer>
  </body>
</html>
Задание 1

사이트에 사용자 섹션과 포스트 섹션을 만드세요. 각 섹션마다 사이트의 기본 레이아웃을 상속하는 자체 레이아웃을 만드세요.