Vue 进阶(八十九):watch 用法详解
在Vue
中,应用watch
来响应数据的变化,示例代码如下,
一、第一种方式
复制代码
第一种方式有一个缺点: 就是当值第一次绑定的时候不会执行监听函数,只有当值改变的时候才会执行。
如果我们想在第一次绑定的时候就执行此监听函数,则需要设置immediate
为true
。比如当父组件向子组件动态传值时,子组件props
首次获取到父组件传来的默认值时,也需要执行函数,此时就需要将immediate
设为true
。
二、第二种方式
复制代码
immediate
表示在watch
中首次绑定的时候,是否执行handler
,值为true
则表示在watch
中声明时,立即执行handler
方法,值为false
,则和一般使用watch
一样,在数据发生变化的时候才执行handler
。
当需要监听一个对象的改变时,普通的watch
方法无法监听到对象内部属性的改变,只有data
中的数据才能够监听到变化,此时就需要deep
属性对对象进行深度监听。
三、第三种方式
复制代码
注:监测对象的时候,newVal == oldVal
此时会给 cityName 的所有属性都加上监听函数,如果属性较多时,每个属性值的变化都会执行handler
。如果只需要监听对象中的一个属性值,则可以做以下优化:使用字符串的形式监听对象属性:
复制代码
四、注意事项⚠️
数组的变化不需要深度监听;
在
watch
中不要使用箭头函数,因为箭头函数中的this
是指向当前作用域.
五、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/26fd045f52ee2d8a291251256】。文章转载请联系作者。
评论