Ugnježdjeni layouti u NextJS
Kao što znate, u folderu /app
u fajlu /layout.jsx
nalazi se osnovni layout sajta.
Po želji, međutim, u ugnježdenim folderima možete kreirati svoje layout-e. U tom slučaju, sadržaj stranice će prvo biti umetnut u ugnježdeni layout, a zatim će rezultujući rezultat biti umetnut u osnovni layout.
Hajde da probamo u praksi. Neka naš osnovni layout ima sledeći izgled:
export default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
Hajde da napravimo još jedan,
ugnježdeni layout za sve
sadržaje iz foldera /users:
export default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
Kao što vidite, u ovom layout-u ne navodimo osnovne tagove stranice, pošto oni već postoje u našem osnovnom layout-u sajta.
Hajde da napravimo i fajl sa sadržajem za prikaz korisnika:
export default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
Nakon ovih manipulacija, naša fajl struktura će izgledati ovako:
- /app/
- layout.jsx
- /users/
- layout.jsx
- /show/
- page.jsx
Sada, ako pristupite odgovarajućem URL-u, NextJS će sve sastaviti i u pretraživaču ćemo dobiti sledeći konačni HTML kod:
<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>
Napravite na sajtu sekciju sa korisnicima i sekciju sa postovima. U svakoj sekciji napravite svoj layout, koji će naslediti od osnovnog layout-a sajta.