Вложени оформления в 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>
Направете в сайта раздел с потребители и раздел с постове. Направете във всеки раздел свое оформление, което ще наследява от основното оформление на сайта.