PassFront
  1. PassFront
  2. База знаний
  3. Состояние и Pinia

Сравни способы передачи 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 — Управление состоянием

Другие вопросы раздела