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:
export 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:
export 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:
export 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 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.