Что покажет Vue watch без immediate при первом рендере?

Первоначально видны 2 и 0: watch без immediate не выполняет callback при регистрации. После увеличения и обработки обновлений будут 3 и 6.

Короткий ответ

Что ответить на собеседовании

Первоначально видны 2 и 0: watch без immediate не выполняет callback при регистрации. После увеличения и обработки обновлений будут 3 и 6.

Подробный разбор

Ответ с пояснениями

Условие

В Vue 3 setup содержит const count=ref(2); const doubled=ref(0); watch(count,v=>{doubled.value=v*2;});. Шаблон выводит count и doubled. Затем пользователь один раз увеличивает count на 1. Что видно первоначально и после обновления?

Ответ

Первоначально видны 2 и 0: watch без immediate не выполняет callback при регистрации. После увеличения и обработки обновлений будут 3 и 6.

Если doubled всегда должен быть удвоенным count, используйте computed(() => count.value * 2), а не отдельный ref с синхронизирующим watcher. Immediate:true также вызовет callback при создании, но для чистого производного значения computed проще. Watch нужен прежде всего для реакции с побочным эффектом, а не обязательного дублирования вычисляемых данных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее