Чим відрізняється локальний стан компонента від глобального?
Коротко:
- Локальний стан → належить конкретному компоненту, використовується лише в ньому.
- Глобальний стан → зберігається в центрі застосунку (store) і використовується багатьма компонентами.
Локальний стан компонента
Це дані, які стосуються лише одного компонента.
Наприклад:
js
data() {
return {
isOpen: false,
searchQuery: '',
form: { name: '', email: '' }
}
}Або в Composition API:
js
const isOpen = ref(false)Характеристики локального стану:
- доступний лише в компоненті
- створений всередині компонента
- компонент сам керує ним
- знищується при видаленні компонента
- не повинен використовуватися в інших місцях
- не впливає на логіку застосунку
Приклади локального стану:
- стан модалки (open/close)
- текст пошуку в інпуті
- стан форми
- обрана вкладка в поточному компоненті
- локальні прапорці (
loading,error)
Глобальний стан
Це дані, які потрібні кільком компонентам або всьому застосунку. Зазвичай зберігаються в менеджері стану:
- Vuex
- Pinia
Або через provide/inject.
Приклади глобального стану:
- поточний користувач
- токен авторизації
- кошик товарів
- список товарів, завантажений один раз
- налаштування застосунку (тема, мова)
- сповіщення
- стан меню/сайдбара
- web-socket дані
Характеристики глобального стану:
- доступний усім компонентам
- зберігається поза компонентом (store)
- існує весь час життя застосунку
- використовується в кількох модулях
- змінюється централізовано
- впливає на роботу всього застосунку
Приклади відмінностей (інтуїтивно)
Приклад 1: кошик товарів
- Локальний стан: чи відкрита модалка "Кошик"
- Глобальний стан: список товарів у кошику
Приклад 2: форма профілю
- Локальний стан: поточний вміст інпутів
- Глобальний стан: інформація про користувача
Приклад 3: теми (light/dark)
- Локальне: яка кнопка натиснута в компоненті
- Глобальне: поточна тема застосунку
Як зрозуміти, чи потрібно розміщувати стан у store?
Поставте одне запитання:
"Чи потрібен стан більш ніж одному компоненту?"
- ТАК → глобальний стан (store)
- НІ → локальний
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.