Įdėtieji maketai NextJS
Kaip jau žinote, aplanke /app
faile /layout.jsx
yra pagrindinis svetainės maketas.
Norint, tačiau, įdėtuose aplankuose galima kurti savo maketus. Tokiu atveju puslapio turinys bus pirmiausia įterpiamas į įdėtąjį maketą, o po to gautas rezultatas bus įterpiamas į pagrindinį maketą.
Pabandykime praktiškai. Tarkime, mūsų pagrindinis maketas turi tokį vaizdą:
app/layout.jsxexport default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
Sukurkime dar vieną,
įdėtą maketą visiems
turiniams iš aplanko /users:
app/users/layout.jsxexport default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
Kaip matote, šiame makete nenurodome pagrindinių puslapio žymių, nes jos jau yra mūsų pagrindiniame svetainės makete.
Sukurkime taip pat failą su turiniu vartotojo rodymui:
src/app/users/show/page.jsxexport default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
Po šių manipuliacijų mūsų failų struktūra atrodys taip:
- /app/layout.jsx/users/layout.jsx/show/page.jsx
Dabar, jei kreipsitės atitinkamu URL, NextJS viską sujungs ir naršyklėje gausime tokį galutinį HTML kodą:
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>
Sukurkite svetainėje skiltį su vartotojais ir skiltį su įrašais. Kiekvienoje skiltyje sukurkite savo maketą, kuris paveldės iš pagrindinio svetainės maketo.