vue中methods、computed和watch的区别

103 阅读2分钟

vue中computed和methods的区别?computed和watch的区别?

我们简单说一下computed的应用场景:数据需要进行二次计算(复杂的计算)的情况下,且代码量比较大的情况下,不建议直接在template部分直接进行计算,建议放在computed中进行计算和维护,另外vue官网中,也有提到过,对于任何复杂逻辑,你都应当使用计算属性。

image.png

image.png

computed和methods最主要的一个区别就是,vue中computed有缓存机制,而methods中没有缓存机制,vue官网中提到,我们可以将同一个函数定义为一个方法而不是一个计算属性。两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的响应式依赖进行缓存的。知在相关响应式依赖发生改变时它们才会重新求值。这意味着只要上述的price和number还没有发生改变,多次访问total会立即返回之前的计算结果,而不必再次执行函数。

image.png

image.png 提示:methods中定义的函数需要我们自己调用(total()),而computed中的不需要我们自己调用,同时computed中不支持异步操作

接下来就是computed和watch的区别了,首先先说一下watch是干什么的,vue官网中提到当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。而computed中不支持异步操作,当computed内有异步操作时无效,无法监听数据的变化

image.png watch是监听,数据或者路由发生了改变才可以执行 computed计算某一个属性的改变,如果某一个值改变了,计算属性会监听到进行返回 watch是当前监听到数据改变了才会执行内部代码