Как мутируется state во Vue?
Состояние и Pinia
Во Vue состояние меняют напрямую — система реактивности сама отслеживает изменения и обновляет интерфейс.
Как это работает
const state = reactive({ count: 0, items: [] });
state.count++; // реактивно
state.items.push('новый'); // тоже реактивно
const name = ref('Анна');
name.value = 'Иван'; // ref меняют через .valueVue 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 — Реактивность в деталях