Skip to main content

Чим layout відрізняється від звичайного React-компонента?

Layout у Next.js - це теж React-компонент, але з особливими правилами і можливостями, які роблять його частиною системи маршрутизації та рендеру. Відмінності не в синтаксисі, а в контексті та поведінці.

Розберемо ключові відмінності.


1. Роль і призначення

Звичайний React-компонент

  • Просто шматок UI
  • Використовується там, де його підключили
  • Нічого не знає про маршрути

Layout у Next.js

  • Визначає структуру сторінок
  • Прив'язаний до папки маршруту
  • Автоматично обгортає всі вкладені сторінки

Тобто layout - це компонент + інфраструктурна роль.


2. Спосіб підключення

React-компонент

tsx
<Header /> <Footer />

Ти сам вирішуєш, де і як його використовувати.

Layout

txt
app/dashboard/layout.tsx

Підключається автоматично до всіх сторінок у цій папці і нижче - без явного імпорту.


3. Поведінка під час навігації

Звичайний компонент

  • Перемальовується разом зі сторінкою
  • Втрачає стан при переході

Layout

  • Зберігається при навігації
  • Не розмонтовується, поки маршрут залишається в тій самій гілці

Це дає:

  • збереження стану UI
  • швидкі переходи
  • більш "нативне" відчуття застосунку

4. Зв'язок з маршрутизацією

React-компонент

  • Не залежить від URL
  • Можна використовувати будь-де

Layout

  • Жорстко пов'язаний з файловою структурою
  • Успадковується вкладеними маршрутами
  • Може бути вкладеним та ієрархічним

Файлова структура = структура інтерфейсу.


5. Робота з HTML-документом

Тільки layout може напряму повертати:

tsx
<html> <body>{children}</body> </html>

Звичайний React-компонент так робити не повинен - він працює всередині вже наявного DOM-дерева.


6. Метадані та SEO

Layout

  • Може задавати метадані
  • Метадані успадковуються сторінками
  • Підходить для SEO на рівні розділів

Звичайний компонент

  • Не бере участі в системі metadata
  • Не впливає на <head> напряму

7. Тип компонента за замовчуванням

Layout

  • Server Component типово
  • Можна працювати з cookies, headers, БД
  • Клієнтські хуки - тільки з "use client"

React-компонент

  • У звичайному React - завжди клієнтський
  • У Next.js може бути client або server, але без спеціальних правил layout'а

Зведена таблиця

LayoutЗвичайний React-компонент
РольСтруктура сторінокUI-елемент
ПідключенняАвтоматичнеРучне
Пов'язаний з роутамиТакНі
Зберігається при навігаціїТакНі
Керує <html> і <body>ТакНі
Метадані та SEOТакНі
Server Component типовоТакЗалежить

Короткий висновок

Layout - це не просто React-компонент, а частина архітектури Next.js. Він відповідає за структуру, навігацію, SEO і продуктивність, тоді як звичайні компоненти вирішують локальні UI-задачі.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.