Вызывается ли watchEffect только при изменении?
Реактивность
Нет. `watchEffect` запускается сразу при создании, а потом — при каждом изменении реактивных данных, которые он прочитал во время последнего запуска.
Как работает
watchEffect(() => {
console.log(`Пользователь: ${user.value.name}`);
});
// выведет сразу и затем при каждом изменении user.value.name- Зависимости не указываются — они собираются автоматически по тому, что эффект прочитал.
- Первый запуск нужен как раз для того, чтобы собрать эти зависимости.
Отличие от watch
watchпо умолчанию «ленивый»: вызывается только при изменении источника (если не указанimmediate: true).watchдаёт старое и новое значение,watchEffect— нет.
Нюанс
Если зависимость читается только в одной ветке if, то при другой ветке она не отслеживается.
Коротко для собеседования
watchEffect срабатывает сразу при создании, а потом при каждом изменении прочитанных данных; «ленивое» поведение даёт watch.
Подробнее: Vue — watchEffect