记录---计算属性(computed)与侦听器(watch)的用法

一、计算属性computed

1.概念:处理数据用来解决代码的冗余

1、计算属性的语法:       

        ①一定要在vue实例的对象computed中声明一个函数

        ②这个函数的返回值return就是计算属性的属性值

        ③template中调用计算属性的变量时不需要写()直接放进插值表达式就可被解析

2、计算属性的缓存机制(提高性能):

        ①计算属性在第一次使用时,会执行一次函数体,之后就会将返回值缓存起来

        ②下一次使用计算属性的时候,不会执行这个函数,而是直接从缓存中读取

        ③只有当计算属性中的数据发生变化时,这个函数才会重新执行一次

 2.写法(getter、setter):

 ①默认get()方法,仅是获取值(注意:不能修改值)

computed:{
    变量名:{
        get(){
            return this.XXX + this.YYY   //计算得出的数据,返回值为变量名的值
        }
    }
}

// 如果只需要获取值而不需要改变值,则可以简化写
computed:{
    变量名(){
        return this.XXX + this.YYY   //返回值为变量名的值
    }
}

 ②set()方法,具有修改属性的功能

 computed: {
    变量名: {
         get() {
            return this.XXX + this.YYY //返回值为变量名的值
         }, 
         set(val) {
            console.log(val); // set的形参val是变量名当前的显示值
         }
    }
}

 这里举个例子:多选项的全选和半选(只大概写一下思路)

 如图:变量名为全选按钮双向绑定的字段 allCheck(值只能为true或false)

         get()的返回值为Boolean型。遍历所有的选项,全部选中返回true,否则为false。这样每个选项都选中的话,全选按钮就是选中状态;如果有一个选项未被选中,全选按钮就是未选中状态。

        set(val)中val的值就是全选按钮状态值。遍历每一项,val的值是true,则让每一个选项的状态都是true,即选中状态。反之,val的值是false,则让每一个选项的状态都是false,即未选中状态。

二、侦听器watch

1.概念:监听data中的某一个数据变化

2.写法(值类型、引用类型):

①值类型

watch:{
    data中类型为数值的数据(newVal,oldVal){
        // 一系列操作
        // newVal:新值    oldVal:旧值
    }
}

②引用类型

watch:{
    data中类型为引用类型的数据(newVal,oldVal){
        deep:true; //开启深度侦听
        immediate:true; //初始化时调用一次 
        handler(){
            //写需要处理的操作
            // newVal:新值    oldVal:旧值
        }
    }
}

计算属性与侦听属性的区别:
        (1)功能不同,计算属性用于解决模板冗余问题。侦听器侦听data中某一个数据变化

        (2)计算属性具有缓存机制,侦听器没有缓存机制

        (3)计算属性不支持异步操作,侦听器支持异步操作

        (4)计算属性可以给vue新增属性,侦听器是 data中已有属性

        (5)计算属性只要使用了就会执行一次,侦听器默认只有第一次改变才会执行

注意:computed能完成的功能,watch都可以完成;watch能完成的功能,computed不一定能完成,例如:watch可以进行异步操作。

补充小知识: 

1、所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。

2、所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,这样this的指向才是vm 或 组件实例对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值