Укладзеныя макеты ў NextJS
Як вы ведаеце, у тэчцы /app
у файле /layout.jsx
размяшчаецца асноўны макет сайта.
Пры жаданні, аднак, ва ўкладзеных тэчках можна ствараць свае макеты. У гэтым выпадку кантэнт старонкі будзе спачатку ўстаўляцца ва ўкладзены макет, а затым атрымаўшыся вынік будзе ўстаўляцца ў асноўны макет.
Давайце паспрабуем на практыцы. Хай наш асноўны макет мае наступны выгляд:
export default function RootLayout({children}) {
return (
<html lang="en">
<body>
<header>
header
</header>
<main>
{children}
</main>
<footer>
footer
</footer>
</body>
</html>
);
}
Давайце зробім яшчэ адзін,
укладзены макет для ўсіх
кантэнтаў з тэчкі /users
:
export default function UsersLayout({children}) {
return (
<div className="info">
message for all users
</div>
<div className="content">
{children}
</div>
);
}
Як вы бачыце, у гэтым макеце мы не паказваем асноўныя тэгі старонкі, так як яны ўжо ёсць у нашым асноўным макеце сайта.
Давайце зробім таксама файл з кантэнтам для паказу карыстача:
export default function User() {
return <>
<h1>User</h1>
<p>
user description
</p>
</>;
}
Пасля гэтых маніпуляцый наша файлавая структура стане выглядаць так:
- /app/
- layout.jsx
- /users/
- layout.jsx
- /show/
- page.jsx
Цяпер, калі звярнуцца па адпаведным URL, NextJS сабере ўсё разам і ў браўзэры мы атрымаем наступны выніковы код 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>
Зрабіце на сайце раздзел з карыстачамі і раздзел з пастамі. Зрабіце ў кожным раздзеле свой макет, які будзе насіліць ад асноўнага макета сайта.