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不支持异步

相关推荐
天平6 小时前
油猴脚本创建webworker踩坑记录
前端·javascript·typescript
原则猫7 小时前
前端基础大厦
前端
陈随易8 小时前
编程语言级别的Skill市场,AI Agent 的未来形态
前端·后端·程序员
SoaringHeart9 小时前
Flutter进阶:基于 EasyRefresh 的下拉刷新封装 n_easy_refresh_mixin.dart
前端·flutter
IT_陈寒11 小时前
Vite的热更新突然不香了,排查三小时差点砸键盘
前端·人工智能·后端
子兮曰11 小时前
Agency-Agents 深度解析:400+ AI 专家的"梦之队"如何重塑开发工作流
前端·后端·vibecoding
山河木马12 小时前
渲染管线-计算得到gl_Position(顶点着色器)之后续GPU流程
javascript·webgl·图形学
竹林81812 小时前
用 The Graph 查询链上数据实战:从手搓 RPC 到 Subgraph,我的 NFT 项目数据加载快了 10 倍
前端·javascript
妙码生花12 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(十九):点选验证码代码逐行目检
前端·后端·go
Awu122713 小时前
⚡从零开发 Agent CLI(五)实现一个可治理、可扩展的工具系统
前端·人工智能·claude