От автора code.mu: РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnxPmLtNL 42 of 57 menu

Вложенные макеты в 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>

Сделайте на сайте раздел с юзерами и раздел с постами. Сделайте в каждом разделе свой макет, который будет наследовать от основного макета сайта.

Русский
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить