computed和watch
含义:computed是vue的计算属性,是根据依赖关系进行缓存的计算,只有在它的相关依赖发生改变时才会进行更新/计算属性在处理一些复杂逻辑时是很有用的)
场景:当需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时都要重新计算。
含义:watch是监听,监听到某个属性变化了,就执行里面的函数。
场景:当需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许执行异步操作 ( 访问一个 API ),限制执行该操作的频率,并在得到最终结果前,设置中间状态。这些都是计算属性无法做到的。/(深度监听)
相同点:他们两者都是观察页面数据变化的。
不同点:
- computed只有反过来的数据变法时才会计算,当数据没有变化时,它会读取缓存数据,
- watch每次都需执行函数。watch更适合用于数据变化时的异步操作。
computed和methods
含义:computed是vue的计算属性,是根据依赖关系进行缓存的计算,只有在它的相关依赖发生改变时才会进行更新/计算属性在处理一些复杂逻辑时是很有用的)
含义:method 调用总会执行该函数。
优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便
不同点
- computed: 计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值;
- method 调用总会执行该函数。
总结
-
computed支持缓存,相依赖的数据发生改变才会重新计算;watch不支持缓存,只要监听的数据变化就会触发相应操作
-
computed不支持异步,当computed内有异步操作时是无法监听数据变化的;watch支持异步操作
-
computed属性的属性值是一函数,函数返回值为属性的属性值,computed中每个属性都可以设置set与get方法。watch监听的数据必须是data中声明过或父组件传递过来的props中的数据,当数据变化时,触发监听器
注意:
- computed能完成的功能,watch都可以完成。
- watch能完成的功能,computed不一定能完成,
- 例如:watch可以进行异步操作