开启掘金成长之旅从computed methods和watch的区别

154 阅读2分钟

computed和watch

含义:computed是vue的计算属性,是根据依赖关系进行缓存的计算,只有在它的相关依赖发生改变时才会进行更新/计算属性在处理一些复杂逻辑时是很有用的)

场景:当需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时都要重新计算。

含义:watch是监听,监听到某个属性变化了,就执行里面的函数。

场景:当需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许执行异步操作 ( 访问一个 API ),限制执行该操作的频率,并在得到最终结果前,设置中间状态。这些都是计算属性无法做到的。/(深度监听)

相同点:他们两者都是观察页面数据变化的。

不同点

  1. computed只有反过来的数据变法时才会计算,当数据没有变化时,它会读取缓存数据,
  2. watch每次都需执行函数。watch更适合用于数据变化时的异步操作。

computed和methods

含义:computed是vue的计算属性,是根据依赖关系进行缓存的计算,只有在它的相关依赖发生改变时才会进行更新/计算属性在处理一些复杂逻辑时是很有用的)

含义:method 调用总会执行该函数。

优势:与methods实现相比,内部有缓存机制(复用),效率更高,调试方便

不同点

  1. computed: 计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值;
  2. method 调用总会执行该函数。

总结

  1. computed支持缓存,相依赖的数据发生改变才会重新计算;watch不支持缓存,只要监听的数据变化就会触发相应操作

  2. computed不支持异步,当computed内有异步操作时是无法监听数据变化的;watch支持异步操作

  3. computed属性的属性值是一函数,函数返回值为属性的属性值,computed中每个属性都可以设置set与get方法。watch监听的数据必须是data中声明过或父组件传递过来的props中的数据,当数据变化时,触发监听器

注意:

  1. computed能完成的功能,watch都可以完成。
  2. watch能完成的功能,computed不一定能完成,
  3. 例如:watch可以进行异步操作