Vue3中的watch、watchEffect
Vue3中的watch
-
监视 ref()所定义的数据
setup(){ let sum = ref(0) watch(sum, (newValue, oldValue) => { //不加 .value,watch 它里面需要的是一个结构,而不是一个具体的数值;没有 .value 的话,sum 就是 RefImple 的实例对象,对象可以 console.log(newValue, oldValue); }) return{ sum } }
// 多个 setup(){ let sum = ref(0) let msg = ref('你好啊') watch([sum,msg], (newValue, oldValue) => { console.log(newValue, oldValue); }, {immediate: true}) return{ sum, msg } }
-
监视 reactive()所定义的数据,其中,newValue === oldValue;所以有问题,目前无法解决。并且 reactive()定义的默认开启了深度监视,并且关闭不了。目前 Vue3.0 是这样,改不了了的,除非以后 3.1 或往上版本会解决
setup(){ let info = reactive({ name: 'jack', age: 18 }) watch(info, (newValue, oldValue) => { console.log(newValue, oldValue); console.log(newValue === oldValue); //true }) return { info } }
-
监视 reactive()里面的某个属性,参数要写成一个函数,此时 oldValue 没有问题
setup(){ let info = reactive({ name: 'jack', age: 18 }) watch(() => info.age, (newValue, oldValue) => { console.log(newValue, oldValue); }) return { info } }
-
监视 reactive()里面的某些属性,此时 oldValue 也没有问题
setup(){ let info = reactive({ name: 'jack', age: 18 }) watch([() => info.age, () => info.name], (newValue, oldValue) => { console.log(newValue, oldValue); }) return { info } }
-
监视 reactive()的对象里面的对象的属性,要开深度监视,此时 oldValue 不好用
setup(){ let info = reactive({ name: 'jack', age: 18, job: { j1: { salary: 200 } } }) watch(() => info.job, (newValue, oldValue) => { console.log(newValue, oldValue); }, {deep: true}) return { info } }
watchEffect
特点:
- 默认开启 立刻监视
- 用到了谁,就监视谁。变了,就会重新走一遍这个回调。(有点类似于计算属性,但又不是,因为计算属性注重的是返回值,而监视属性注重的是过程)
setup(){
let info = reactive({
name: 'jack',
age: 18,
job: {
j1: {
salary: 200
}
}
})
watchEffect(() => {
let a = {
name: info.name,
age: info.age,
job: info.job.j1.salary
}
console.log('watchEffect 指定的回调执行了');
})
return {
info
}
}
这一路,灯火通明
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-08-01 归并排序
2021-08-01 快速排序