Innestede layouter i NextJS
Som du vet, i mappen /app
i filen /layout.jsx
finner du hovedlayoutet for nettstedet.
Om ønskelig, kan du imidlertid opprette egne layouter i innestede mapper. I så fall vil sidens innhold først bli plassert i den innestede layouten, og deretter vil det resulterende resultatet blitt plassert i hovedlayoutet.
La oss prøve dette i praksis. Anta at hovedlayoutet vårt har følgende utseende:
export default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
La oss lage en til,
innestet layout for alt
innhold fra mappen /users:
export default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
Som du ser, spesifiserer vi ikke sidens grunnleggende tagger i denne layouten, siden de allerede finnes i hovedlayoutet vårt for nettstedet.
La oss også lage en fil med innhold for å vise en bruker:
export default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
Etter disse manipulasjonene vil vår filstruktur se slik ut:
- /app/
- layout.jsx
- /users/
- layout.jsx
- /show/
- page.jsx
Nå, hvis du går til den tilsvarende URL-en, vil NextJS sette alt sammen og i nettleseren vil vi få følgende endelige HTML-kode:
<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>
Opprett en seksjon for brukere og en seksjon for innlegg på nettstedet ditt. Lag din egen layout i hver seksjon som vil arve fra nettstedets hovedlayout.