watch和watchEffect的区别?
监听属性 watch
1、watch(监听的属性,回调函数(newVal,oldVal),{deep:true,immediate:true})
2、监听多个:watch([监听的属性1,监听的属性2, ()=>监听的属性3(reactive声明的属性)],
回调函数(newVal,oldVal),{deep:true,immediate:true})
3、watch显式指定依赖数据,依赖数据更新时执行回调函数
4、具有一定的惰性lazy 第一次页面展示的时候不会执行,只有数据变化的时候才会执行(设置immediate: true时可以变为非惰性,页面首次加载就会执行)
5、既要指明监视的属性,也要指明监视的回调
watchEffect监听
1、watchEffect自动收集依赖数据,依赖数据更新时重新执行自身
2、立即执行,没有惰性,页面的首次加载就会执行
3、不用指明监视哪个属性,监视的回调中用到哪个属性就监视哪个属性
let sum = ref(1)
let person = reactive({job:'gongzi'})
watchEffect(() => {
const x = sum.value
const y = person.job
console.log('watchEffect变化了')
})