Vnořené layouty v NextJS
Jak víte, v složce /app
v souboru /layout.jsx
se nachází hlavní layout webu.
V případě potřeby však lze vnořených složkách vytvářet vlastní layouty. V tomto případě bude obsah stránky nejprve vložen do vnořeného layoutu a poté bude výsledek vložen do hlavního layoutu.
Pojďme to vyzkoušet v praxi. Nechť náš hlavní layout má následující podobu:
app/layout.jsxexport default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
Vytvořme ještě jeden,
vnořený layout pro veškerý
obsah ze složky /users:
app/users/layout.jsxexport default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
Jak vidíte, v tomto layoutu neuvádíme základní tagy stránky, protože již jsou v našem hlavním layoutu webu.
Vytvořme také soubor s obsahem pro zobrazení uživatele:
src/app/users/show/page.jsxexport default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
Po těchto manipulacích bude naše souborová struktura vypadat takto:
- /app/layout.jsx/users/layout.jsx/show/page.jsx
Nyní, pokud přistoupíme na příslušnou URL, NextJS vše spojí dohromady a v prohlížeči získáme následující výsledný HTML kód:
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>
Vytvořte na webu sekci s uživateli a sekci s příspěvky. V každé sekci vytvořte vlastní layout, který bude dědit od hlavního layoutu webu.