Vue学习记录之四(watch侦听器和watchEffect高级侦听器)
watch
watch 用于侦听特定的响应式数据源(如数据、计算属性等),比如ref或者是reactive时,并在其变化时执行回调函数。它适合用于处理副作用,如 API 请求或异步操作。使用 watch 适合特定数据变化的侦听,提供更细粒度的控制。
import { ref, watch } from 'vue';
const count = ref(0);
//watch第一个参数是侦听的数据源
// 第二个参数是一个回调函数 ()=>{},该回调函数有2个参数,一个是新值,另外一个旧值。
// 如果想侦听多,可以使用数组 watch([,,],(newValue, oldValue)=>{}),数组中有几个元素,就会出现几组newValue和oldValue
// 也可以监听对象,但是需要用到第三个参数,watch(数据源,(new,old)=>{},{deep: true}) 深度侦听。 而且如果是引用类型,监听到新值和旧值是一样的,
//ref中需要起开deep,reactive不需要,自动会开启deep
//如果只想侦听某个对象的某个属性,可以将属性转化为对象,如()=>message.foo.bar.name,将他作为侦听源。
//watch 第四个参数,immediate,默认的是false,开启后,只要运行就输出一次,即使没有发生改变。
// 第五个参数:flush, 默认的是pre. 是组件更新之前调用,值为sync 同步执行,值为post 组件更新之后执行。
watch(count, (newValue, oldValue) => {console.log(`Count changed from ${oldValue} to ${newValue}`);
});
watchEffect
watchEffect 用于自动追踪其内部使用的响应式状态。它适合用于需要依赖多个数据源的场景,并会在任何相关数据变化时重新运行。使用 watchEffect 更方便,适用于动态依赖的场景,可以自动追踪相关数据。
import { ref, watchEffect } from 'vue';const count = ref(0);
const doubleCount = ref(0);// watchEffect 接收一个回调函数 ()=>{}, 把侦听的值直接放里面就可以。
// 参数可以接受一个回调函数,在监听之前做一些事。
// 还可以停止监听,watchEffect返回值是一个函数,直接调用就可以停止监听。
watchEffect(() => {doubleCount.value = count.value * 2;console.log(`Double count is now: ${doubleCount.value}`);
});
实例
<template><div><input v-model="message" type="text" /> <br><input v-model="message2" type="text" /><br></div>
</template>
<script setup lang='ts'>
import { ref,reactive, watchEffect } from 'vue'
let message = ref<string>("大飞机")
let message2 = ref<string>("小飞机")
watchEffect((oninvalidate)=>{// 它是非惰性的,一进入页面,先给调用一次。console.log("message",message.value)console.log("message2",message2.value)oninvalidate(()=>{console.log("执行之前可以进行一些操作")})
})
</script>
停止监听
<template><div><input v-model="message" type="text" /> <br><button @click="stopWatch">停止监听</button></div>
</template>
<script setup lang='ts'>
import { ref,reactive, watchEffect } from 'vue'
let message = ref<string>("大飞机")
const stop = watchEffect((oninvalidate)=>{console.log("message",message.value)oninvalidate(()=>{console.log("执行之前可以进行一些操作")})
})
const stopWatch = () =>stop()
</script>
更多配置项:副作用刷新时机flush, 有三个可选值,一般为 post
- post: 组件更新后执行
- pre: 组件更新前执行
- sync: 强制效果,始终同步触发
<template><div><input id="ipt" v-model="message" type="text" /> <br><button @click="stopWatch">停止监听</button></div>
</template>
<script setup lang='ts'>
import { ref,reactive, watchEffect } from 'vue'
let message = ref<string>("大飞机")
const stop = watchEffect((oninvalidate)=>{//提示可能为null,我们来个断言(不能将类型“HTMLInputElement | null”分配给类型“HTMLInputElement”。)let ipt:HTMLInputElement = document.querySelector("#ipt") as HTMLInputElement//console.log("message",message.value)console.log(ipt,"eeeeeeeeeeee")oninvalidate(()=>{console.log("执行之前可以进行一些操作")})
},{//flush属性有三个选项:post,pre,syncflush:"post",// 开发环境帮我们调试程序onTrigger(e){debugger}
})
const stopWatch = () =>stop()
</script>
相关文章:
Vue学习记录之四(watch侦听器和watchEffect高级侦听器)
watch watch 用于侦听特定的响应式数据源(如数据、计算属性等),比如ref或者是reactive时,并在其变化时执行回调函数。它适合用于处理副作用,如 API 请求或异步操作。使用 watch 适合特定数据变化的侦听,提…...
RedisTemplate操作ZSet的API
文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素,并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…...
Android 15 正式发布至 AOSP
Google官方宣布,将于近期发布了 Android 15,而在早些时候,Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内,Android 15 将在受支持的 Pixel 设备上正式推出,并将于今年晚些时候在三星、Honor、iQOO、…...
IEEE Electronic Library(IEL)数据库文献检索下载介绍及个人获取IEEE文献途径
一、数据库介绍 IEEE(The Institute of Electrical and Electronics Engineers,电气电子工程师学会)是目前全球最大的非营利性专业技术学会,在全球160多个国家拥有超过45万名会员。IEEE在电气电子、计算机、半导体、通讯、电力能…...
动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调
动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG:rerank模型微调实践 bge-reranker-v2-m3动手学习RAG:迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…...
蓝桥杯2024省C
P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏,他有 7385137888721个 22的方块和 10470245 个 11 的方块,他需要从中挑出一些来拼出一个正方形,比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形,用…...
C++:内部类,匿名对象,操作符new与delete
一.内部类 1.如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,跟定义在全局相比,他只是受外部类类域限制和访问限定符限制,所以外部类定义的对象中不包含内部类。 2.内部类默认是外部类的友元类。…...
【数据结构】排序算法---计数排序
文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组…...
mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换
获取当前日期和时间 NOW():返回当前的日期和时间。CURDATE():返回当前的日期。CURTIME():返回当前的时间。 SELECT NOW(), CURDATE(), CURTIME(); 日期和时间格式化 DATE_FORMAT(date, format):根据指定的格式字符串格式化日期…...
Android开发高频面试题之——kotlin篇
Android开发高频面试题之——kotlin篇 Android开发高频面试题之——Java基础篇 Android开发高频面试题之——Kotlin基础篇 Android开发高频面试题之——Android基础篇 1. Kotlin如何实现空安全的? Kotlin 将变量划分为可空和不可空,通过查看字节码可知,声明不可空的变量会…...
8--SpringBoot原理分析、注解-详解(面试高频提问点)
目录 SpringBootApplication 1.元注解 --->元注解 Target Retention Documented Inherited 2.SpringBootConfiguration Configuration Component Indexed 3.EnableAutoConfiguration(自动配置核心注解) 4.ComponentScan Conditional Co…...
语言的枚举
不同语言的枚举 C/C枚举本质是整型,在Java中是对象,而非基本类型,可通过instanceof Object判断是否是对象类型。C#与Java不同,枚举是值类型。C语言更纯粹,枚举绝对当成整数,可以对枚举变量用整数赋值&…...
C# Redis 框架开发技术详解
引言 Redis 是一个高性能的键值存储系统,广泛用于缓存、消息队列和实时分析等场景。在 C# 中,有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库: StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…...
Rust:Result 和 Error
在 Rust 编程语言中,错误处理是一个核心部分,用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质(trait)来处理错误。 Result 枚举 Result 是一个泛型枚举,用于表示一个操作可能成功或失败。它有两个…...
Python基础(八)——MySql数据库
一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储,借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载:https://www.mysql.com/ 查看是否安装配置成功: 安装DBeaver用于Mysql数据库图形化 安装:…...
统一网关--gateway(仅供自己参考)
1、网关的概念: 2、网关的功能: (1):身份认证和权限校验 (2):服务路由(具体的业务路由到具体的服务),负载均衡(多台服务的话ÿ…...
【Leetcode152】分割回文串(回溯 | 递归)
文章目录 一、题目二、思路三、代码 一、题目 二、思路 具体例子和步骤:假设 s "aab",步骤如下: 初始状态: s "aab"path []res [] 第一层递归(外层循环): path []检…...
基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对…...
深入探究 Flask 的应用和请求上下文
目标 读完本文后,您应该能够解释: 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时,处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…...
C++学习笔记(30)
二十三、随机数 在实际开发中,经常用到随机数,例如:纸牌的游戏洗牌和发牌、生成测试数据等。 函数原型: void srand(unsigned int seed); // 初始化随机数生成器(播种子)。 int rand(); // 获一个取随机数。…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
