Vue的computed与watch的区别

使用普通的methods会得到和computed一样的计算结果,但是不同的是,使用getName方法随着渲染,方法也会被重新调用,而computed不会重新进行计算,从而性能开销比较小。当新的值需要大量计算才能用到的时候,缓存的意义就非常大。如果computed所依赖的数据发生改变时,计算属性才会重新计算,并进行缓存。当改变其他数据时,computed属性并不会重新计算,从而提升性能。

计算属性computed:
  1. 支持缓存,只有依赖数据发生改变,才会重新进行计算
  2. 不支持异步,当computed内有异步操作时无效,无法监听数据的变化
  3. computed 属性值会默认走缓存,计算属性是基于它们的响应式依赖进行缓存的,也就是基于data中声明过或者父组件传递的props中的数据通过计算得到的值

侦听属性watch:

  1. 不支持缓存,数据变,直接会触发相应的操作
  2. watch支持异步;
  3. 监听的函数接收两个参数,第一个参数是最新的值;第二个参数是输入之前的值;

适用场景

  • computed 适⽤于计算⽐较消耗性能的计算场景,watch 监听某个数据的变化(监听完调用什么函数) 一个数据影响多个数据 (比如:浏览器自适应、监控路由对象、监控自身属性变化)
  • 当我们要进⾏数值计算,⽽且依赖于其他数据,那么把这个数据设计为computed,computed 计算后返回新 一个数据受多个数据影响(比如:计算总价格、过滤某些数据)
  • 如果你需要在某个数据变化时做⼀些事情,使⽤watch来观察这个数据变化
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 14:08
点赞 评论 收藏
分享
06-05 19:46
已编辑
武汉大学 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务