NextJSでのネストされたレイアウト
ご存知のように、 /app フォルダ内の
/layout.jsx ファイルには
サイトのメインレイアウトが配置されています。
必要に応じて、ネストされた フォルダ内に独自のレイアウトを作成することもできます。 この場合、ページコンテンツは まずネストされたレイアウトに挿入され、 次に結果として得られたものが メインレイアウトに挿入されます。
実際に試してみましょう。 私たちのメインレイアウトが 次のようになっているとします:
export default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
/users フォルダ内の
すべてのコンテンツ用にもう一つ、
ネストされたレイアウトを作成しましょう:
export default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
ご覧の通り、このレイアウトでは ページの主要タグを指定していません。 なぜなら、それらはすでにサイトのメインレイアウトにあるからです。
ユーザーを表示するための コンテンツファイルも作成しましょう:
export default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
これらの操作の後、私たちのファイル 構造は次のようになります:
- /app/
- layout.jsx
- /users/
- layout.jsx
- /show/
- page.jsx
これで、対応するURLにアクセスすると、 NextJSがすべてをまとめ、ブラウザでは 次の最終的な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>
サイトにユーザーセクションと 投稿セクションを作成してください。 各セクションに、サイトのメインレイアウトから 継承する独自のレイアウトを作成してください。