В чем разница между watch и watchEffect

«В чем разница между watch и watchEffect» — вопрос из категории Vue, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

watch и watchEffect — это Composition API хуки во Vue 3 для реактивного отслеживания изменений.

watch

  • Требует явного указания зависимостей (source).
  • Выполняет колбек только при изменении указанных зависимостей.
  • Позволяет получить старое и новое значение.
watch(count, (newVal, oldVal) => {
  console.log(`Count changed from ${oldVal} to ${newVal}`);
});

watchEffect

  • Автоматически отслеживает все реактивные зависимости внутри колбека.
  • Запускается сразу при создании и при любом изменении зависимостей.
  • Не предоставляет старые значения.
watchEffect(() => {
  console.log(`Count is now: ${count.value}`);
});

Итог:

  • watch — для точного контроля, когда нужно старое значение.
  • watchEffect — для автоматического отслеживания всех зависимостей.