Vue - watch高阶用法
程序员文章站
2022-06-20 20:23:06
1. 不依赖新旧值的watch 很多时候,我们监听一个属性,不会使用到改变前后的值,只是为了执行一些方法,这时可以使用字符串代替 2.立即执行watch 总所周知,watch是在监听属性改变时才会触发,有些时候,我们希望在组件创建后watch能够立即执行一次。 可能想到的的方法就是在create生命 ......
1. 不依赖新旧值的watch
很多时候,我们监听一个属性,不会使用到改变前后的值,只是为了执行一些方法,这时可以使用字符串代替
data:{ name:'joe' }, watch:{ name:'sayname' }, methods:{ sayname(){ console.log(this.name) } }
2.立即执行watch
总所周知,watch是在监听属性改变时才会触发,有些时候,我们希望在组件创建后watch能够立即执行一次。
可能想到的的方法就是在create生命周期中调用一次,但这样的写法不优雅,或许我们可以使用这样的方法
data:{ name:'joe' }, watch:{ name:{ handler: 'sayname', immediate: true } }, methods:{ sayname(){ console.log(this.name) } }
上面我们给入一个对象
handelr: 触发监听执行的方法(需要用到改变前后的值时,可换成函数)
immediate: 监听开始之后被立即调用
3. 深度监听
在监听一个对象时,当对象内部的属性被改变时,无法触发watch,我们可以继续使用对象的方式为其设置深度监听
data:{ studen: { name:'joe', skill:{ run:{ speed: '5m/s' } } } }, watch:{ studen:{ handler: 'sayname', deep: true } }, methods:{ sayname(){ console.log(this.studen) } }
设置deep为true后,无论嵌套多深,只要属性值被改变都会触发监听
4.监听执行多个方法
使用数组可以设置多项,形式包括字符串、函数、对象
data:{ name:'joe' }, watch:{ name:[ 'sayname1', function(newval, oldval){ this.sayname2() }, { handler: 'sayname3', immaediate: true } ] }, methods:{ sayname1(){ console.log('sayname1==>', this.name) }, sayname2(){ console.log('sayname2==>', this.name) }, sayname3(){ console.log('sayname3==>', this.name) }, }
watch文档:
推荐阅读
-
Vue使用watch监听一个对象中的属性的实现方法
-
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
-
vue-watch如何监听非DOM元素的事件
-
vue.js中toast用法及使用toast弹框的实例代码
-
Vue2 监听属性改变watch的实例代码
-
vue-router中scrollBehavior的巧妙用法
-
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
-
vue中的watch监听数据变化及watch中各属性的详解
-
template标签是什么意思(vue的template用法)
-
Vue - watch高阶用法