vue3 监听

news/2024/9/19 0:42:38/ 标签: vue.js, javascript, 前端

watch

(1)监听ref 状态的变化
const num = ref(1)
watch(num,(newValue,oldValue)=>{console.log(newValue,oldValue);//2,1
})
setTimeout(()=>{num.value++
},500)
(2)computed
const num = ref(1);
const double = computed(()=> num.value*2);
watch(double,(newValue,oldValue)=>{console.log(newValue,oldValue);//4,2
})
setTimeout(()=>{num.value++
},500)
(3)reactive对象,默认是深度监听,此时newValue===oldValue
const obj = reactive({name:"xx",age: 18
})
watch(obj,(newValue,oldValue)=>{console.log(newValue===oldValue);//trueconsole.log(newValue);//Proxy(Object) {name: 'zhangsan', age: 19}
})
setTimeout(()=>{obj.name = "zhangsan";obj.age = 19
},500)

想要改变监听层级,可以配置第三个参数:

  • 配置对象
  • {
    deep: false,//是否深度监听
    once: true/false, //回调是否执行一次,默认false
    immediate: true/false,//是否立即执行,默认false
    }
(4)监听多个数据
const num = ref(1);
const sex = ref("male");
watch([num,sex],(newValue,oldValue)=>{console.log(newValue,oldValue);
})
setTimeout(()=>{num.value++;sex.value = "female"
},500)
(5)监听getter
const obj = reactive({name:"xx",age: 18
})
watch(()=>obj.age,(newValue,oldValue)=>{console.log(newValue,oldValue);//19,18
})
setTimeout(()=>{obj.name = "zhangsan";obj.age = 19
},500)

watchEffect

(1)不指定依赖的响应式数据,在回调函数中读取了那个响应式数据,就建立一个依赖
(2)会立即执行一次

触发回调时机

  • 默认触发回调是在父组件更新之后,DOM更新之前,想要改变回调函数执行时间,可以使用配置参数:flush:‘post’

停止监听

  • 顶级同步的监听器在组件被销毁的时候会自动销毁,异步的监听需要手动销毁
const obj = reactive({name:"xx",age: 18
})
let uwatch;
setTimeout(()=>{uwatch=watch(obj,(newValue,oldValue)=>{console.log(newValue,oldValue); })
},500)
setTimeout(()=>{obj.name = "zhangsan" //执行watch回调
},1500)
setTimeout(()=>{uwatch();//销毁监听
},5000)
setTimeout(()=>{obj.age = 19;//此时已经没有watch
},7500)

http://www.ppmy.cn/news/1519943.html

相关文章

惠中科技光伏清洗剂:绿色清洁,引领光伏行业新潮流

在当今全球能源转型的大潮中,光伏产业作为绿色能源的重要组成部分,正以前所未有的速度蓬勃发展。然而,随着光伏板在户外环境的长时间暴露,其表面不可避免地会积累灰尘、鸟粪、油污等污染物,严重影响光伏板的透光率和发…

Gorm--Scan

在 Gorm 中,Scan 是一个用于将查询结果映射到自定义结构体或变量的函数。与 Find 或 First 不同,Scan 允许你将查询结果存储到与数据库模型不完全匹配的结构体中。它特别适合用于自定义查询结果或联合查询的场景。 type Result struct {Name stringEma…

#单片机基础 笔记二

SPI中断 1.SPI总线协议 1.1协议介绍 SPI接口是Motorola (motorola | Smartphones, Accessories & Smart Home Devices)首先提出的全双工三线/四线同步串行外围接口采用主从模式(Master Slave)架构。 时钟由Master控制&#xf…

ELK学习笔记——如何给Kibana新增用户和角色

Kibana新增用户和角色 首先用超管账号登录上Kibana,按照下面步骤操作 1、创建角色 按图操作 2、创建用户 按图操作 3、给用户分配角色 至此,角色和用户绑定成功; 最后,可以退出管理员账号,登录这个新…

github私有仓库通过action部署hexo到公开仓库

github私有仓库通过action部署hexo到公开仓库 有一段时间一直将博客md文件直接放到公开仓库然后通过工作流action创建一个gh-page分支,来实现部署 但是这样做有一个问题,如果你的源文件,或者配置文件中有涉及变量,或者密钥key&a…

Linux-vim

文章目录 vi和vimvim的基本概念vim的基本操作vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作更改跳至指定的行 vim末行模式命令集列出行号跳到文件中的某一行查找字符保存文件推出vim vi和vim vi/vim的区别简单点来说,…

Linux C 内核编程 /proc 编程例子

直接上代码 proc_demo.c内核版本&#xff1a; 5.4.0-150-generic #include <linux/module.h> #include <linux/sched.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/uaccess.h> #include <linux/slab.h>s…

threading.local的使用

python中的threading.local对象 在Python中&#xff0c;使用threading.local对象的意义在于为每个线程提供了一种安全地存储和访问线程局部变量的方式。这种机制对于多线程编程特别有用&#xff0c;因为它可以帮助开发者避免一些常见的多线程编程问题&#xff0c;如数据竞争、…

技术周刊 | Rspack 1.0、v0 支持 Vue、2024 年度编程语言排行榜、Ideogram 2.0、从 0 实现一个 React

大家好&#xff0c;我是童欧巴&#xff0c;欢迎来到第 126 期技术周刊。 资讯 Rspack 1.0 Rspack 1.0 正式发布&#xff0c;作为一款基于 Rust 的高性能 JavaScript 打包工具&#xff0c;它兼容 webpack API 和生态&#xff0c;提供了显著提升的构建性能。1.0 版本在性能、兼…

第三章:实时流数据处理与分析

目录 3.1 流处理框架深入解析与实战 Flink与Kafka Streams的性能对比&#xff1a;事件驱动架构的代码实现 1. Apache Flink&#xff1a;流处理的“性能怪兽” 2. Kafka Streams&#xff1a;轻量级、低延迟的流式处理框架 实时异常检测与报警系统&#xff1a;结合Flink CEP…

【Transformer】基本概述

文章目录 提出背景核心思想—注意力机制流程解析参考资料 提出背景 在Transformer模型出现之前&#xff0c;循环神经网络&#xff08;RNN&#xff09;及其变体&#xff0c;如长短期记忆网络&#xff08;LSTM&#xff09;和门控循环单元&#xff08;GRU&#xff09;&#xff0c;…

版本控制工具git

版本控制工具 git 数据库 > 有代码历史版本 > 仓库 每个文件都是不同的历史版本&#xff0c;以便恢复 集中式版本控制系统 例如&#xff1a;SVN 缺陷&#xff1a; 1.依赖于中心服务器 分布式的版本管理系统 只有程序员用 git 只有需要在同步代码的时候需要联网 程…

Java笔试面试题AI答之面向对象(9)

文章目录 49. 简述Java继承时&#xff0c;类的执行顺序是什么&#xff1f;一、类的静态成员初始化顺序二、对象的初始化顺序三、总结 50. 举例说明什么情况下会更倾向于使用抽象类而不是接口&#xff1f;1. 当需要定义和实现部分通用行为时2. 当需要访问修饰符或方法修饰符时3.…

sqlite3的db.wait方法:等待所有查询完成

Node.js中sqlite3的db.wait方法深入解析 在Node.js环境中&#xff0c;sqlite3库为开发者提供了一个与SQLite数据库进行交互的简洁API。在处理数据库操作时&#xff0c;有时需要等待直到所有的查询都完成&#xff0c;这时db.wait方法就显得尤为重要。本文将深入解析sqlite3库中…

基于Python的机器学习系列(22):高斯混合模型(GMM)聚类的改进版

在之前的篇章中&#xff0c;我们介绍了高斯混合模型&#xff08;GMM&#xff09;及其基本实现。本文将扩展这一模型&#xff0c;重点是引入早停机制来提高训练效率&#xff0c;并且在训练过程中每隔一定的迭代次数绘制聚类结果&#xff0c;以便观察模型的收敛情况。 引入早停机…

Windows下使用pm2管理多个前端vue项目

1. 安装Node.js和npm: 确保你已经在Windows系统上安装了Node.js和npm。你可以在Node.js的[官方网站](https://nodejs.org/)下载并安装适合你系统的版本。 2. 安装pm2: 打开命令提示符(或PowerShell),运行以下命令来全局安装pm2: npm install pm2 -g 3. 创建pm2配置…

React16新手教程记录

文章目录 前言一些前端面试题1. 搭建项目1. 1 cdn1. 2 脚手架 2. 基础用法2.1 表达式和js语句区别&#xff1a;2.2 jsx2.3 循环map2.4 函数式组件2.5 类式组件2.6 类组件点击事件2.6.1 事件回调函数this指向2.6.2 this解决方案2.6.2.1 通过bind2.6.2.2 箭头函数&#xff08;推荐…

【C++ 游戏】密室逃脱

首先来大张旗鼓的介绍一下&#xff1a; 全网之最&#xff1a; 本游戏为全网第一篇C语言的密室逃脱类剧情游戏 本游戏为全网第一篇将画面类同等性质转化为文字类的游戏 本游戏为画——文类型游戏的突破口&#xff0c;适合借鉴 哈哈好了不吹了&#xff0c;不过上面的都是真的。 …

温馨网站练习运用

第二次与团队一起制作网页虽然不进行商用&#xff0c;但是练习一下还是好的&#x1f60a;&#x1f60a; 我主要负责后端部分&#xff0c;该项目用了SpringBoot框架、SpringSecurity的安全框架、结合MyBatis-Plus的数据库查询。如果想看看&#xff0c;网站&#xff1a;温馨网登…

AI大模型之旅-本地安装llm工具dify 和 fastgpt

一:安装dify 官网地址&#xff1a; https://dify.ai/ 克隆 Dify 源代码至本地。 git clone https://github.com/langgenius/dify.git 启动 Dify 进入 Dify 源代码的 docker 目录&#xff0c;执行一键启动命令&#xff1a; cd dify/docker cp .env.example .env docker com…