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

Как мутируется state во Vue?

Состояние и Pinia

Во Vue состояние меняют напрямую — система реактивности сама отслеживает изменения и обновляет интерфейс.

Как это работает

const state = reactive({ count: 0, items: [] });
state.count++;               // реактивно
state.items.push('новый');   // тоже реактивно

const name = ref('Анна');
name.value = 'Иван';         // ref меняют через .value

Vue 3 оборачивает объекты в Proxy: при чтении запоминает зависимости, при записи запускает обновление тех компонентов и computed, которые от них зависят.

Где мутировать нельзя

  • props — только для чтения; изменения просят у родителя через событие.
  • Vuex — state меняют только через мутации (commit).
  • Pinia — можно напрямую или через actions, но для сложной логики лучше actions.

Нюанс Vue 2

Во Vue 2 новые свойства объекта и изменения массива по индексу не были реактивными — нужен был Vue.set. Во Vue 3 этих ограничений нет.

Коротко для собеседования

Во Vue 3 state мутируют напрямую, Proxy отслеживает изменения; props менять нельзя, во Vuex — только через мутации.

Подробнее: Vue — Реактивность в деталях

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