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