前言
这次来学习以下vue中的两个选项,watch和computed 这两个是用来监听数据的变化的,但是又有区别。以前我监听数据的变化都是通过原生js的 oninput或者是 keyup 事件来判断数据是否发生变化,但是很显然在vue中这样是不够哦高效的,那么在vue中正确使用 watch 和 computed 可以大大的提高我们的开发效率。
watch的使用
watch是vue实例中的一个选项,是一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个属性。
可以像这样使用:
- 监听文本框数据
1 | <body> |
- 监听路径变化
- watch不仅仅能够监听文本框的数据变化,它能够监听到vue中一切数据的变化,十分的强大
- 例如监听路径的变化:
1
2
3
4
5
6
7//这里可以不用加this
"$route.fullPath": function (newVal, oldVal) {
//这里用path或者是fullPath来判断都可以,但是要注意大小写
if (newVal == "/test") {
alert('跳转到了test组件')
}
}
注意,不应该使用箭头函数来定义 watcher 函数,理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例
computed的使用
同样一个例子我们也可以使用 computed 来完成,我们也可以看出他们之间的区别。
1 | <body> |
总结
在vue中虽然也可以使用事件来监听数据的改变,但是在大部分情况下使用vue中的 watch 和 computed 会更加的适合vue并且有更高的效率。在合适的场景正确的使用这两个选项可以很大程度上的提高我们的开发效率,要合理使用。