Vue watch和computed的区别

Posted 奥特曼 

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue watch和computed的区别相关的知识,希望对你有一定的参考价值。

watchcomputed
定义格式必须监听存在的属性(data、props、computed)不能和data定义的变量相同
异步支持异步操作不支持异步
开销适合一些开销较大的操作适合做一些简单依赖的计算

对于computed能做的 watch都可以做,至于选择哪个去做,都应该去看使用场景

一、使用场景

第一个输入框+第二个输入框 进行拼接

    <input type="text" v-model="num1" name="" id="">+
    <input type="text" v-model="num2" name="" id="">=
    {{num3}}
    {{res}}

监听

 watch:{
      res(){
      this.num3= this.num1+this.num2
      },
      num2(){
      this.num3= this.num1+this.num2
      }
    },

计算属性

    computed: {
      res() {
        return this.num1+this.num2
      }
    },

从代码量来看 显然更适合 用计算属性去做,而使用watch 就要检测两个值的变化 稍微繁琐了些

但是 watch 可以做一些异步的事情 并且可以设置改变多个值   这是计算属性做不到的

二、缓存

关于缓存问题 个人感觉 这两个并不能比,可以用computed和methods去比

方法

    {{res()}}
    {{res()}}

    methods: {
      res() {
        console.log('方法被执行了');
       return this.num1+this.num2
      }
    },

 如果视图上多个使用这个方法 每个调用都会执行

 计算属性

 而计算属性不同,只有当值发生改变的时候他才会执行,如果上次没有改变他会取从缓存拿值

    {{res}}
    {{res}}

    computed: {
      res() {
        console.log('计算属性执行了');
        return this.num1+this.num2
      }
    },

参考官网:computed和watch

以上是关于Vue watch和computed的区别的主要内容,如果未能解决你的问题,请参考以下文章

Vue computed和watch

Vue 中computed 和 watch 的区别

vue的computed和watch的区别

vue之watch和计算属性computed

Vue中watch和computed的区别和应用场景

Vue中computed和watch的区别