computed vs methods
相同点:
首先它们都可以在模板上调用(methods内方法想computed那样return)
不同点:
缓存:
computed有缓存,methods没有
computed计算属性是基于它们的响应式依赖进行缓存的
也就是说不管你在template模板上输出了几次,只有值没有改变,都只输出一次
调用方式:
computed调用没有括号,methods有()
总结:
“我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行”。
可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。
computed vs watch
1.输出的执行不同
computed值没有改变时也会输出
watch只有值改变时才会输出
- 2.监听数量有差别(一对多,多对一)
computed是监听多个值,只要某一值发生改变就会重新输出
而watch是监听一个值
3.watch监听更灵活
watch可以监听旧值和新值,可以设置immediate:true 页面首次加载的时候做一次监听
https://blog.csdn.net/qq_38110274/article/details/121242203
- 4.异步与否(return)
computed不能异步 因为computed依赖return来获取结果,如settimeout的回调是被全局函数所引用的,无法return给computed
watch可以 不需要return
- 缓存
computed有缓存
watch没有缓存的概念 因为它的输出和监听都依赖于其它对象如路由 data props 所以它就是一个监听 仅此而已