3——VUE侦听器和计算属性

一、普通方法

格式:

javascript 复制代码
methods:{
      方法名(形参){
          方法体;
      }
}

二、侦听器 Watch

问题:用普通方法实现不了对数据进行时刻关注

解决:watch侦听,实现对数据时刻监控,一旦数据发生改变立马会有反应

1、写法:

javascript 复制代码
 //写法一:类似于函数
 watch:{
        a(val){
                this.c=val+this.b;
        },
        b(val){
                this.c=val+this.a;
        }
       
    }
javascript 复制代码
//写法二:类似于对象写法(复杂数据类型建议使用此方法)
watch:{
        b:{
          handler(val){
            console.log(val);
        }
    }
       
    } 

注意:

1、侦听器他和普通方法同级

2、侦听器必须侦听的是data中的数据,否则会报错

2、立即监听:都是使用对象写法通过handler处理函数immediate:true实现立即监听

javascript 复制代码
//普通数据   
 b:{
            handler(newname,oldname){
              console.log(newname,oldname)
            },
           immediate:true,               
        },
  //复杂数据
        'obj.name':{
             handler(newname,oldname){
               console.log(newname,oldname)
            },
           immediate:true,
        }
       

3、深度监听 deep:true

javascript 复制代码
//深度监听可以监听到对象的所有属性
    obj:{
             handler(newname,oldname){
              console.log(newname,oldname)
            },
           immediate:true,
           deep:true

        }

三、计算属性Computed

1、概述

在Vue组件中,通过在computed对象中定义计算属性的名称及对应的计算函数来创建计算属性。计算函数会返回计算属性的值

计算属性:计算data中的数据得到一个结果,影响结果的数据将都会被监听

格式:

javascript 复制代码
 computed:{
    c(){
      return this.a+this.b;  (a和b是data中的数据)
    }
  }

注意:

1.计算属性的结果是通过计算属性得来的,所以会时刻进行对data中相关数据的监听

2.计算属性的结果不能出现在data中

总结:computed会初始化(页面打开会被执行一次),computed有缓存机制,监听数据无变化会走缓存

四、watch和computed的不同

相同:

1、都可以监听数据

2、watch和computed与methods都是同级

不同:

1、computed 有缓存

2、watch 只可以监听一个data中的数据,computed可以监听多个或一个

3、watch监听的数据必须是data中声明的,computed计算属性不可以在data中声明

4、computed中有get和set方法

5、watch支持异步,computed不支持异步

相关推荐
天蓝色的鱼鱼11 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping11 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙12 小时前
[译] Composition in CSS
前端·css
白水清风12 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix13 小时前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts
用户221520442780013 小时前
new、原型和原型链浅析
前端·javascript
阿星做前端13 小时前
coze源码解读: space develop 页面
前端·javascript
叫我小窝吧13 小时前
Promise 的使用
前端·javascript
NBtab13 小时前
Vite + Vue3项目版本更新检查与页面自动刷新方案
前端
天天扭码13 小时前
来全面地review一下Flex布局(面试可用)
前端·css·面试