两者都可监听data属性变化
watch需要明确监听哪个属性
watcheffect 会根据其中的属性自动监听其变化,你写了哪个就会监听哪个,没写就不监听
watcheffect初始化时,一定会执行一次(收集要监听的数据),watch只有你设置了初始化监听才会监听
watch(
// 第一个参数,确定要监听哪个属性
() => state.age,
// 第二个参数,回调函数
(newAge, oldAge) => {
console.log('state watch', newAge, oldAge)
},
// 第三个参数,配置项
{
immediate: true, // 初始化之前就监听,可选
// deep: true // 深度监听
}
)
watchEffect(() => {
// 初始化时,一定会执行一次(收集要监听的数据)
console.log('hello watchEffect')
})
watchEffect(() => {
console.log('state.name', state.name)
})