Vue computed属性和methods区别
原文链接:https://blog.csdn.net/weixin_28809701/article/details/112703809
先说下computed属性和methods区别
computed是响应式的,methods并非响应式。
调用方式不一样,computed定义的成员像属性一样访问,methods定义的成员必须以函数形式调用。
computed是带缓存的,只有其引用的响应式属性发生改变时才会重新计算,而methods里的函数在每次调用时都要执行。
computed中的成员可以只定义一个函数作为只读属性,也可以定义get/set变成可读写属性,这点是methods中的成员做不到的
比如:我们想去时刻监控数据的变化,在视图上显示不同的结果,当然这两中方法都可以实现这种效果,这个时候用computed就比较合理了,因为computed是可缓存的,只要数据层值不改变,computed就不会去改变,而且可缓存,如果数据层的值变了,computed就会实时更新到视图层上,所以说computed是响应式的。
computed属性和watch区别
computed里属性名是自定义的,它可以监听一个或多个它所依赖的数据项;而watch一次只能监听一个属性,这个属性函数接收两个参数,一个是新值一个是旧值。
computed里自定义的属性不能与data里的属性重复,否则会报错;而watch里监听的属性必须是已存在的,其要么是data里的属性,要么是computed里计算出来的属性。
watch是允许异步操作的(访问一个API),并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。
我们在不知道用什么时,基本上用computed是没什么问题的。
如有差错,请各位指正