当前位置: 首页 > news >正文

Vue3 中选项式下的侦听器

目录

  • 前言:
  • watch 侦听的分类:
    • 函数式的侦听器
    • 对象式侦听器
  • 创建侦听器
  • 停止侦听器
  • 总结:

前言:

今天小编给大家讲解一下,Vue3 中选项式下的侦听器。

我正在参加 2022年「博客之星」年度总评选,请大家帮我支持一下,给我一个五星。
|
点击前往我的评选页面:
|
在这里插入图片描述
大家只要按图给我五星即可,谢谢大家的帮助。


watch 侦听的分类:


函数式的侦听器

其中函数名就是要侦听的数据源,函数中的参数,为新数据源的新、旧值;

watch: {
  // 函数式侦听器
  age(newVal, oldVal) {
    console.log("newVal:" + newVal);
    console.log("oldVal:" + oldVal);
  },
},

对象式侦听器

在 watch 选项中声明的对象即为对象侦听器

  1. 对象名就是要侦听的数据源。
  2. 对象中的 handler 方法为数据源发生改变时,执行的代码块,其中参数一为新值,参数二为旧值
  3. deep:
    1. watch 默认是浅层,被侦听的属性,仅仅在被赋新值时,才会触发回调,嵌套的属性发生变化时,不会触发;
    2. 如果想侦听所有嵌套的变更,你需要深层侦听器:deep:true 选项;
    3. 深度侦听需要遍历被侦听对象中所有嵌套的属性,按需使用,开销很大。
  4. immediate:立即执行
    1. watch 默认是懒执行的,仅当数据源变化时,才会执行。但是在很大业务中,我们需要在创建侦听器,立即执行一遍回调,可采用 immediate:true 选项;
    2. 按需使用;
  5. flush:获取组件更新之后的 DOM
    1. 默认情况下,创建的侦听器回调,都会在 Vue 组件更新之前被调用,这意味着在回调中访问的 DOM 将是更新之前的状态;
    2. 如果想在侦听器回调中能访问被更新之后的 DOM,你需要设置 flush:‘post’

watch: {
  // 对象式侦听器
  "emp.name": {
    // 如果 epm.name 发生改变,将执行 handler 代码片段
    handler(newVal, oldVal) {
      console.log("newVal:" + newVal);
      console.log("oldVal:" + oldVal);
      // 获取 DOM
      console.log(document.getElementById("main").innerHTML);
    },
    // deep:深度监听
    // deep: true,
    flush: "post",
  },
},

创建侦听器

在指定的位置,创建侦听器
语法:this.$watch(data,method,object)

  1. data:侦听的数据源,类型为 String
  2. method:当数据源发生改变时,执行的回调函数(新值,旧值)
  3. object:配置,类型为对象(按需使用)

停止侦听器

需要自行停止侦听器时,可以调用 $watch() 返回的函数

mounted() {
  // 需要自行停止侦听器时,可以调用 $watch() 返回的函数
  this.stopWatch = this.$watch(
    "emp",
    (newVal, oldVal) => {
      console.log(newVal);
      console.log(oldVal);
    },
    { deep: true, flush: "post" }
  );
  setTimeout(() => {
    stopWatch();
  }, 3000);
},

总结:

最后还请大家帮我点击一下,谢谢大家的帮助

我正在参加 2022年「博客之星」年度总评选,请大家帮我支持一下,给我一个五星。
|
点击前往我的评选页面:
|
在这里插入图片描述
大家只要按图给我五星即可,谢谢大家的帮助。


以上就是 Vue3 中选项式下的侦听器,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

相关文章:

  • 有向图的拓扑序列
  • 防御 CSS 黑客——介绍“安全的 CSS hacks”
  • 通信原理与MATLAB(九):DPSK的调制解调
  • Docker安装配置运行Redis
  • 2022 年上海市大学生程序设计竞赛 M. My University Is Better Than Yours
  • 数据结构(陈越、何钦铭)学习笔记
  • pytorch集锦(2)-处理数据DataLoader和Dataset(2)
  • Ant Design入门
  • 网络请求回调的实现方式
  • STM32 使用IQmath实现SVPWM 正弦波无刷电机控制
  • Openstack的安装部署教程
  • 密码学_AES加密算法
  • 个人博客系统(前后端分离)
  • Linux常用基本指令详解
  • Linux c编程之静态库与动态库
  • GitUp, 你不可错过的秀外慧中的git工具
  • Windows Containers 大冒险: 容器网络
  • 产品三维模型在线预览
  • 从零开始的无人驾驶 1
  • 工程优化暨babel升级小记
  • 三分钟教你同步 Visual Studio Code 设置
  • 原生js练习题---第五课
  • 中文输入法与React文本输入框的问题与解决方案
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 交换综合实验一
  • 容器镜像
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (4)logging(日志模块)
  • (C++)八皇后问题
  • (Git) gitignore基础使用
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Note)C++中的继承方式
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)80c52学习之旅-起始篇
  • *Django中的Ajax 纯js的书写样式1
  • . NET自动找可写目录
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net Core和.Net Standard直观理解
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • /proc/stat文件详解(翻译)
  • @RequestMapping-占位符映射
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧
  • [1127]图形打印 sdutOJ
  • [2544]最短路 (两种算法)(HDU)
  • [AIGC] 深入浅出 Python中的`enumerate`函数
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强