Vue 3: Почему variable watcher работает некорректно?

#javascript #vue.js #vuejs3 #watch #vue-sfc

#javascript #vue.js #vuejs3 #Смотреть #vue-sfc

Вопрос:

У меня в моем проекте есть такой код:

 <script setup>
import { ref, watch } from 'vue'

const num = ref(null)

// Some condition
if(true) {
  // Doesn't works. Why?
  num.value = 1

  // Works
  //setTimeout(() => {
  //  num.value = 2
  //})
}
// Simple watcher  
watch(num, (newVal, oldVal) => {
  console.log("Num changed to: ", newVal)
})
</script>
 

Мой watcher не работает, когда я устанавливаю num.value = 1 . Как я могу исправить это, чтобы это работало?
Но когда я запускаю с setTimeout ним работу

Демонстрационный проект здесь

Ответ №1:

Вы добавляете наблюдателя после того, как установили для него значение 1, поэтому у него нет шансов его перехватить.