Vue中computed&method&watch的区别

先说下computed属性和methods区别

  1. computed是响应式的,methods并非响应式。
  2. 调用方式不一样,computed定义的成员像属性一样访问,methods定义的成员必须以函数形式调用。
  3. computed是带缓存的,只有其引用的响应式属性发生改变时才会重新计算,而methods里的函数在每次调用时都要执行。
  4. computed中的成员可以只定义一个函数作为只读属性,也可以定义get/set变成可读写属性,这点是methods中的成员做不到的。

比如:我们想去时刻监控数据的变化,在视图上显示不同的结果,当然这两中方法都可以实现这种效果,这个时候用computed就比较合理了,因为computed是可缓存的,只要数据层值不改变,computed就不会去改变,而且可缓存,如果数据层的值变了,computed就会实时更新到视图层上,所以说computed是响应式的。

computed属性和watch区别

  1. computed里属性名是自定义的,它可以监听一个或多个它所依赖的数据项;而watch一次只能监听一个属性,这个属性函数接收两个参数,一个是新值一个是旧值。
  2. computed里自定义的属性不能与data里的属性重复,否则会报错;而watch里监听的属性必须是已存在的,其要么是data里的属性,要么是computed里计算出来的属性。
  3. watch是允许异步操作的(访问一个API),并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。

我们在不知道用什么时,基本上用computed是没什么问题的。

上一篇:Vue中methods与computed的区别


下一篇:从零开始学VUE3.X-数据,计算,方法和侦听器