计算属性和侦听器

60 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

计算属性

应用场景:一个变量的值,依赖另外一些数据计算而来的结果

优势:计算属性将基于依赖项的值进行缓存,依赖值不变,直接从缓存里取结果 依赖值改变,函数重新执行并重新缓存

不完整写法:当计算属性的值不会被修改时

计算属性名(){
    return 返回值
}

完整写法:当计算属性的值被用户修改,重新给计算属性赋值时

计算属性名:{
     set(形参接收用户修改的值){
         
         //当用户修改时触发这个方法
    },
     get( ){
        
    return  值  //单纯使用值,触发get方法  ,并将值返回给计算属性变量
        
    }
 }

注意:计算属性也是vue变量,所以不要和data里的变量重名,用法和data相同,访问用this

计算属性名为变量,所以使用时不需要加括号

侦听器

目标:可以监听data/computed属性值的改变

基础数据类型监听:

watch:{
   要被侦听的变量名(newVal,oldVal){
       //当变量的值被改变时这里被自动触发
        newVal//更改后的新的值
        oldVal//上一次的旧的值
        
    }
}
​

引用数据类型监听(对象/数组):侦听复杂类型,或者立即执行侦听函数

watch:{  //固定格式
    要被侦听的对象名:{
        immediate:true  //立即执行handler
        deep:true   //深度侦听复杂类型内变化
        handler(newVal,oldVal){
             newVal//更改后的新的对象(对象里的值更改后的新对象)
             oldVal//上一次的旧的对象(对象里的值更改前的对象)
        }
    }
}
​
​
​
//侦听对象的某个属性
watch:{  //固定格式
    '要被侦听的对象.属性名':{
        immediate:true  //立即执行handler
        deep:true   //深度侦听复杂类型内变化
        handler(newVal,oldVal){
             newVal//更改后的新的对象(对象里的值更改后的新对象)
             oldVal//上一次的旧的对象(对象里的值更改前的对象)
        }
    }
}
​
​
​

可以侦听对象,也可以侦听变量,不过写法不同