Сравни способы передачи state между компонентами во Vue и объясни, когда выбирать каждый вариант.
Состояние и Pinia
Способ передачи состояния во Vue выбирают по тому, насколько далеко находятся компоненты и сколько их.
Варианты
- props и события — для родителя и прямого ребёнка. Самый наглядный способ: зависимость видна в шаблоне.
- `v-model` — двусторонняя привязка для полей и своих компонентов-контролов.
- provide / inject — для передачи через несколько уровней без prop drilling (тема, текущий пользователь, контекст формы).
- Pinia — общее состояние для разных частей приложения: корзина, авторизация, кеш данных.
- composables с общим состоянием — небольшой модуль с
refвне компонента, если store избыточен.
// общий composable
const count = ref(0);
export function useCounter() {
return { count, inc: () => count.value++ };
}Как выбирать
Начинайте с props. Если данные проходят через компоненты, которым они не нужны, — provide/inject. Если нужны в несвязанных местах — Pinia.
Коротко для собеседования
props/события для соседних уровней, provide/inject для глубокой передачи, Pinia для глобального состояния.
Подробнее: Vue — Управление состоянием