Що таке дерево компонентів?
Дерево компонентів - це структура, в якій компоненти Vue організовані у вигляді ієрархії: одні компоненти є батьківськими, інші - їхніми дочірніми, і так формується структура всього застосунку.
По суті: Це "карта" того, які компоненти вкладені один в одного. Як дерево DOM, тільки на рівні Vue-компонентів.
Простий приклад дерева компонентів
Припустимо, у нас є застосунок:
App
├─ Header
│ └─ Logo
├─ Sidebar
└─ Dashboard
├─ StatsCard
└─ ChartЦе і є дерево компонентів:
App - корінь, все інше - гілки та листя.
Як формується дерево компонентів?
Коли ти використовуєш компонент всередині іншого:
<template>
<Header />
<Dashboard />
</template>
<script setup>
import Header from './Header.vue'
import Dashboard from './Dashboard.vue'
</script>то App стає батьківським для Header і Dashboard.
Якщо всередині Dashboard є:
<template>
<StatsCard />
<Chart />
</template>то Dashboard → батьківський для StatsCard і Chart.
Навіщо потрібно розуміти дерево компонентів?
1. Для передавання даних (props & emits)
Дані йдуть згори вниз (props), події - знизу вгору (emit).
Важливо розуміти, хто батько, хто дитина.
2. Для керування станом
Іноді дані потрібно зберігати вище по дереву, щоб ними ділилися кілька дочірніх компонентів.
Приклад: Sidebar і Header читають користувача із загального стану в App.
3. Для оптимізації
Vue оновлює тільки ту частину дерева, де змінилися дані.
Якщо компонент глибокий - важливо розуміти, як це впливає на ререндер.
4. Для пошуку помилок
Помилки типу:
- "props не приходять"
- "emit не ловиться"
- "я неправильно передав слот"
часто пов'язані з неправильним розумінням ієрархії компонентів.
5. Для архітектури й організації проєкту
Правильна побудова дерева:
- зменшує дублювання,
- робить логіку чистішою,
- полегшує рефакторинг.
Приклад візуалізації (як у DevTools)
Vue DevTools показує дерево компонентів:
App
├─ BaseLayout
│ ├─ Navbar
│ └─ Sidebar
└─ PageHome
├─ HomeBanner
├─ HomeStats
└─ HomeFooterМожна кліком перейти до будь-якого компонента, подивитися:
- його props
- його стан
- його події
- його рендери
Аналогія
Уяви, що у тебе є DOM:
<div>
<header></header>
<main>
<section></section>
</main>
</div>Vue робить те саме, але на рівні компонентів, а не тільки HTML-тегів.
Підсумок (шпаргалка)
Дерево компонентів - це ієрархічна структура, що показує, як компоненти вкладені один в одного.
Воно важливе для:
- передавання даних
- керування станом
- оптимізації
- налагодження
- архітектури
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.