vue computed和watch区别及如何使用

本文详细解析了Vue.js中computed和watch的区别及使用场景。computed属性用于计算属性,具备缓存特性,适用于一对一或多对一的数据转换;而watch则用于监听属性变化,不支持缓存,适合执行异步操作。文章通过实例展示了如何设置computed的setter,以及watch的多种使用方式,包括简单的值监听、调用方法和深度监听。
摘要由CSDN通过智能技术生成

vue computed和watch区别及如何使用

computed(计算属性)

要点

  • 是一个函数要有返回值 否则不起作用的
  • 是具有缓存性质的,通过计算data或者props中声明的值来计算出新的值,如果依赖的值发生改变就会重新计算,如果没有发生变化,再获取该值时会直接从缓存中获取值
  • 是不支持异步的,如果在里面使用异步的话会直接报错的
  • 当一个属性需要从data或者props中获得的数据计算而来且是一对一或者多对一的情况我们就可以使用computed

使用
在这里插入图片描述
computed默认只要getter 如果需要setter可以自行设置setter

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

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

watch(监听属性)

要点

1、不支持缓存数据变,就会直接触发函数。
2、可在watch函数里执行异步或者开销较大的操作
3、具有两个参数第一个是新的值第二个是旧的值
4、可以是函数也可以是对象,对象的话有三个属性不得不了解下了,handler\immediate\deep

  • handler和immediate
    handler就不在介绍了现在介绍下immediate,watch有个特性,当我们第一次绑定的时候是不会执行函数的,但如果我们想要绑定时就执行就可以设置immediate属性为true就行了
  • deep深度监听
    deep如果我们监听是一个对象,对象里的某个属性发生变化是触发不到函数的,但如果加上deep:true的话就可以监听到,但是这样添加是为该对象中的所有属性都添加上了该属性,所以任何属性发生变化都会触发函数,这显然是没有必要的。我们只需对我们需要监听的某个属性添加即可,我们采用"对象名:属性名"的字符串作为监听对象属性,还有一点一维二维数组是不需要深度监听的但是数组里面有对象也是需要深度监听的。

第一种使用
在这里插入图片描述
这种我是直接输出显示,也可以调methods里面的方法
第二种使用
在这里插入图片描述
第三种使用

    watch:{
        "userName.name":"changeVal"//changeVal是methods里面的方法
    },
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值