Vue3 watch scheduler 执行时是否应该收集依赖

70 阅读1分钟
const { reactive, effect, watch  }  = require('vue');

const nums = reactive({ num1: 1, num2: 2, num3:3})

effect(() => {
  console.log('effect' + nums.num1)
  watch(() => {
    console.log('watch' + nums.num2)
  },() => {
      console.log('scheduler' + nums.num3)
    },
  {immediate: true}
    
)
})
nums.num3 = 4

输出

effect1
watch2
scheduler3
effect1
watch2
scheduler4

只有在执行effect.run时才会有activeEffect(effect上线文),执行scheduler时不会收集,但是如果父级的activeEffect存在,此时父级会收集到这个变化