Первоначально видны 2 и 0: watch без immediate не выполняет callback при регистрации. После увеличения и обработки обновлений будут 3 и 6.
Что покажет Vue watch без immediate при первом рендере?
Первоначально видны 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 нужен прежде всего для реакции с побочным эффектом, а не обязательного дублирования вычисляемых данных.