[转] vue之computed和watch

本文深入解析Vue.js中computed和watch的特性与用途。computed属性通过依赖型数据自我更新,具备缓存机制,适用于复杂计算;watch监听数据变化,执行异步或高开销任务。了解何时使用何种方法,提升开发效率。
计算属性 computed
侦听器or观察者 watch

一直以来对computed和watch一知半解,用的时候就迷迷糊糊的,今天仔细看了看文档,突然茅塞顿开,原来就是这么简单啊:

computed,通过别人改变自己

watch,通过自己改变别人

需要注意的是,computed会缓存数据,只有在满足以下两个条件时才会重新计算:

1、存在依赖型数据,即存在于VUE的data等对象的实下的实例数据

2、依赖型数据发生改变

如果不满足以上两个条件,computed不会重新计算,只会拿缓存的数据。而watch,只要调用他,他就会执行。

注意:computed会缓存数据,所以进行开销较大的操作时不适合用它。

非依赖型数据发生改变时,这是使用methods方法即可。

computed也可以通过自己改变别人

computed默认只有 getter ,不过在需要时也可以提供一个 setter:

    computed: {
      fullName: {
        // getter
        get: function () {
          return this.firstName + ' ' + this.lastName
        },
        // setter
        set: function (newValue) {
          var names = newValue.split(' ')
          this.firstName = names[0]
          this.lastName = names[names.length - 1]
        }
      }
    }

然后运行 vm.fullName = 'John Doe' 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

什么时候使用

computed
1、其他依赖型数据发生改变,自身也要改变的时候

2、自身改变了,想要改变其他数据的时候,这时需要添加setter

watch
1、自身改变时改变其他数据

2、当需要在数据变化时执行异步或开销较大的操作时

转载于:https://www.cnblogs.com/chris-oil/p/9962188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值