Що таке стан (state) у контексті Vue.js?
Стан (state) у контексті Vue.js - це дані, які зберігаються всередині компонента чи застосунку і можуть змінюватися з часом, викликаючи перемальовування інтерфейсу.
Простіше кажучи:
- State - це те, що впливає на те, що користувач бачить на екрані.
- Коли state змінюється - змінюється UI.
Де зберігається стан?
У Vue 3 стан найчастіше створюється за допомогою reactive() або ref():
<script setup>
import { ref } from 'vue'
// це стан
const count = ref(0)
</script>count - це state.
Коли count.value зміниться - Vue автоматично оновить інтерфейс.
Приклад: стан у компоненті
<template>
<button @click="count++">
Count: {{ count }}
</button>
</template>
<script setup>
import { ref } from 'vue'
const count = ref(0) // <- стан компонента
</script>UI оновиться щоразу, коли ми змінюємо count.
Чому стан важливий?
Тому що UI залежить від даних.
Наприклад:
- чи відкрите модальне вікно
- текст, введений у форму
- яка вкладка обрана
- список товарів у кошику
- дані, отримані з API
- поточний користувач
Усе це - state.
Як Vue реагує на зміни стану?
Vue використовує реактивність: він відстежує, які дані використовуються в шаблоні чи обчисленнях.
Коли ти змінюєш state:
count.value++Vue:
- фіксує зміну
- обчислює, які частини UI зачеплені
- перемальовує лише потрібні компоненти
Це робить застосунок швидким.
Види стану у Vue
1) Локальний стан
Зберігається в компоненті.
Приклад: стан модалки, інпута, лічильника.
const isOpen = ref(false)2) Глобальний стан
Використовується в усьому застосунку.
Зберігається в:
- Pinia
- старих проєктах - Vuex
Приклад: стан авторизації, кошик, налаштування користувача.
export const useUserStore = defineStore('user', {
state: () => ({ user: null })
})Стан із props
Іноді стан передається зверху вниз батьком:
<ChildComponent :title="pageTitle" />Тут pageTitle - теж state батька.
State + UI: простий приклад
<template>
<input v-model="name" placeholder="Введіть ім'я" />
<p>Привіт, {{ name }}!</p>
</template>
<script setup>
import { ref } from 'vue'
const name = ref('') // стан
</script>Змінюємо name -> Vue оновлює відображення тексту.
Що НЕ є станом?
- Константи
- імпортовані дані
- обчислювані властивості (вони залежать від стану, але самі state не зберігають)
- props усередині батька (вони стають state у дитині лише якщо обробляються локально)
Підсумок (коротко)
Стан (state) у Vue - це змінювані дані, від яких залежить UI. Коли state змінюється - Vue автоматично оновлює інтерфейс.
State буває:
- локальним (усередині компонента),
- глобальним (Pinia/Vuex),
- переданим через props.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.