
vue之watch详解
发布日期:2021-05-04 17:17:41
浏览次数:33
分类:精选文章
本文共 1647 字,大约阅读时间需要 5 分钟。
什么是watch?
一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch()
,遍历 watch 对象的每一个属性。
类型:{ [key: string]: string | Function | Object | Array }
测试公共代码如下:
第一种方式:
watch: { // 第一种watch监听方式 watchTextOne (newVal, oldVal) { console.log('watchTextOne新值:', newVal) console.log('watchTextOne旧值:', oldVal) },},
第二种方式:
watch: { // 第二种watch监听方式,写一个监听处理函数 watchTextTwo: 'watchTextTwoFn',}|methods: { watchTextTwoFn (newVal, oldVal) { console.log('watchTextTwo新值:', newVal) console.log('watchTextTwo旧值:', oldVal) },},
以上两种方式使用watch时有一个特点,就是当值第一次绑定的时候,不会执行监听函数,只有值发生改变才会执行。
如果我们需要在最初绑定值的时候也执行函数,则就需要用到immediate属性。 比如当父组件向子组件动态传值时,子组件props首次获取到父组件传来的默认值时,也需要执行函数,此时就需要将immediate设为true。第三种方式:
watchTextThree: { handler (newVal, oldVal) { console.log('watchTextThree新值:', newVal) console.log('watchTextThree旧值:', oldVal) }, immediate: true // immediate表示在watch中首次绑定的时候,是否执行handler},
当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够监听到变化,此时就需要deep属性对对象进行深度监听。
watchTextFour: { handler (newVal, oldVal) { console.log('watchTextFour新值:', newVal) console.log('watchTextFour旧值:', oldVal) }, deep: true // 此时会给watchTextFour的所有属性都加上这个监听器,当对象属性较多时,每个属性值的变化都会执行handler。},
如果只需要监听对象中的一个属性值,则可以做以下优化:使用字符串的形式监听对象属性:
'watchTextFour.age': { handler (newVal, oldVal) { console.log('watchTextFour.age新值:', newVal) console.log('watchTextFour.age旧值:', oldVal) }, deep: true},
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年04月12日 19时47分33秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
js求阶乘
2021-05-08
Nginx---惊群
2021-05-08
项目中常用的审计类型概述
2021-05-08
(九)实现页面底部购物车的样式
2021-05-08
python-day3 for语句完整使用
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08