前端面试首页投稿(暂停使用,暂停投稿)Web 前端开发

vue中computed和watch之间的差异

2017-11-06  本文已影响2538人  上上啊上山莫要下河

最近项目中使用了vue框架,之前并没有接触过,所以也是一边做一边成长。

踩的坑不少,但是谁还不是踩坑成长的呢~
不管坑是大是小,现在都拿出来做一个分享,既方便自己以后的学习,也可以引来同行们的互相吐槽(๑╹◡╹)ノ"""

今天总结的是computed和watch之间的差异对比,如有不对的地方还请各位同行指正~

1、写法上的区别
2、用法上的差异
例1:
var vm = new Vue({
 data: { a: 1 },
 computed: {
    //是最后需要计算的值,而这个值依赖this.a
    //那么这个值要写在对象的key值的位置
    aDouble: function () {
      return this.a * 2
    }
  }
})

这时候模板渲染的{{aDouble}}这个值是2

※ 通过计算的aDouble这个变量不需要在data里面声明,如果声明了就会报错

例2:
var vm = new Vue({
  data: {
    a: 1
  },
  watch: {
    a: function (val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    }
  }
})
vm.a = 2 // => new: 2, old: 1

这时候如果this.a发生了改变,那么监听a变量发生变化的function就会被执行

※ 需要监听的这个变量需要在data里面声明,如果不声明就会报错

3、是否利用缓存

计算属性只有在它的相关依赖发生改变时才会重新求值。这就意味着只要 lastName和firstName都没有发生改变,多次访问 fullName计算属性会立即返回之前的计算结果,而不必再次执行函数。
来自:https://segmentfault.com/q/1010000009263244?sort=created dodomonster的回答。


给第一次写技术文章的自己:
上一篇下一篇

猜你喜欢

热点阅读