PassFront
  1. PassFront
  2. База знаний
  3. Реактивность

Вызывается ли watchEffect только при изменении?

Реактивность

Нет. `watchEffect` запускается сразу при создании, а потом — при каждом изменении реактивных данных, которые он прочитал во время последнего запуска.

Как работает

watchEffect(() => {
  console.log(`Пользователь: ${user.value.name}`);
});
// выведет сразу и затем при каждом изменении user.value.name
  • Зависимости не указываются — они собираются автоматически по тому, что эффект прочитал.
  • Первый запуск нужен как раз для того, чтобы собрать эти зависимости.

Отличие от watch

  • watch по умолчанию «ленивый»: вызывается только при изменении источника (если не указан immediate: true).
  • watch даёт старое и новое значение, watchEffect — нет.

Нюанс

Если зависимость читается только в одной ветке if, то при другой ветке она не отслеживается.

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

watchEffect срабатывает сразу при создании, а потом при каждом изменении прочитанных данных; «ленивое» поведение даёт watch.

Подробнее: Vue — watchEffect

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