intermediate
Reactivity во Vue
Понимайте ref, reactive, computed, watch, отслеживание зависимостей, unwrap и планирование обновлений.
Reactivity Vue 3 на Proxy. `ref` оборачивает одно значение (unwrap в шаблонах); `reactive` отслеживает граф объектов. `computed` кэширует до смены зависимостей; `watch` / `watchEffect` — side effects.
const count = ref(0);
const state = reactive({ items: [] });
watch(count, (n) => console.log('count', n));
Обновления батчатся асинхронно в одном тике. В script для ref читайте `.value`; в шаблонах auto-unwrap.
На интервью: dependency tracking против явного setState в React; почему теряется `reactive` при destructure; shallowRef для крупных immutable blob.
Типовые ошибки: замена всего reactive root вместо мутации полей, deep watch на огромных деревьях, нереактивные class instances без `markRaw`.
Компромисс: удобный auto-tracking против mental model ref/unwrap/коллекций.
Чеклист:
- ref для примитивов и переназначаемых singles.
- reactive для мутируемых графов.
- computed для чистого вывода.
- watch с flush/deep только по необходимости.