唯品秀前端博客

在vue3中很多地方相比较vue2语法过于自由,也可以说零碎,本篇下面来比较下在watch在vue2和vue3中的使用过程中的语法差异性

vue2中使用watch

1
2
3
4
5
6
7
8
9
watch: {
    obj: {
        handler(newVal, oldVal) {
            console.log(newVal, oldVal)
        },
        immediate: true, // 初始化第一次是否执行
        deep: true // 深度监听
    }
}

vue3中使用watch

基本

1
2
3
4
5
6
7
8
9
let book= reactive ({
  name: 'JavaScript高级程序设计',
  publish_time: 2022
})

watch(book, (newValue, oldValue) => {
  console.log('book---', newValue, oldValue)
})
// 默认依然初始化是获取不到旧的oldValue数据

初始化监听

1
2
3
4
5
6
7
8
9
10
let book= reactive ({
  name: 'JavaScript高级程序设计',
  publish_time: 2022
})

watch(book, (newValue, oldValue) => {
  console.log('book---', newValue, oldValue)
},{
  immediate:true // 同样,初始化执行
})

监听“对象”中某个对象

注意:在vue3中是没有deep深度监听选项的,因为它天然支持深度监听,但如果我们想监听数据中单独指定某个对象又该如何?如下:

1
2
3
4
watch(() => obj.arr, (newVal, oldVal) => {
    console.log(newVal, oldVal)
})
// 注意,里面监听的是箭头函数

监听多个数据

1
2
3
4
5
watch([msg, str], (newVal, oldVal) => {
    console.log(newVal, oldVal)
}, {
    immediate: true
})
1
2
3
4
5
6
watch([msg, str, ()=>obj.arr], (newVal, oldVal) => {
    console.log(newVal, oldVal)
}, {
    immediate: true
})
// 注意()=>obj.arr,监听数据某个对象是箭头函数形式

立即执行监听函数

该方法实际可以理解为监听所有数据,当任何数据改变时候,都可以在里面获取到最新的值

1
2
3
watchEffect(() => {
    console.log(msg.value)
})

结语

整体来看vue3的watch相比较vue2要复杂麻烦,只能多练练才能更好学习掌握了,官网Api地址

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(0) 打赏
标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"Vue3中watch使用方式及watchEffect光速了解"

表情

最新评论

    暂无留言哦~~
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏