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

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 用于侦听特定的响应式数据源&#xff08;如数据、计算属性等&#xff09;&#xff0c;比如ref或者是reactive时&#xff0c;并在其变化时执行回调函数。它适合用于处理副作用&#xff0c;如 API 请求或异步操作。使用 watch 适合特定数据变化的侦听&#xff0c;提…...

RedisTemplate操作ZSet的API

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素&#xff0c;并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…...

Android 15 正式发布至 AOSP

Google官方宣布&#xff0c;将于近期发布了 Android 15&#xff0c;而在早些时候&#xff0c;Google已经将其源代码推送至 Android 开源项目 (AOSP)。未来几周内&#xff0c;Android 15 将在受支持的 Pixel 设备上正式推出&#xff0c;并将于今年晚些时候在三星、Honor、iQOO、…...

IEEE Electronic Library(IEL)数据库文献检索下载介绍及个人获取IEEE文献途径

一、数据库介绍 IEEE&#xff08;The Institute of Electrical and Electronics Engineers&#xff0c;电气电子工程师学会&#xff09;是目前全球最大的非营利性专业技术学会&#xff0c;在全球160多个国家拥有超过45万名会员。IEEE在电气电子、计算机、半导体、通讯、电力能…...

动手学习RAG:大模型重排模型 bge-reranker-v2-gemma微调

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;rerank模型微调实践 bge-reranker-v2-m3动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3动手学习RAG: 大模型向量模型微调 intfloat/e5-mistral-7b-instruct动手学…...

蓝桥杯2024省C

P10898 [蓝桥杯 2024 省 C] 拼正方形 题目描述 小蓝正在玩拼图游戏&#xff0c;他有 7385137888721个 22的方块和 10470245 个 11 的方块&#xff0c;他需要从中挑出一些来拼出一个正方形&#xff0c;比如用 3 个 22 和 4 个 11 的方块可以拼出一个 44 的正方形&#xff0c;用…...

C++:内部类,匿名对象,操作符new与delete

一.内部类 1.如果一个类定义在另一个类的内部&#xff0c;这个内部类就叫做内部类。内部类是一个独立的类&#xff0c;跟定义在全局相比&#xff0c;他只是受外部类类域限制和访问限定符限制&#xff0c;所以外部类定义的对象中不包含内部类。 2.内部类默认是外部类的友元类。…...

【数据结构】排序算法---计数排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 算法分析6. 代码实现C语言PythonJavaGo 结语 1. 定义 计数排序又称为鸽巢原理&#xff0c;是对哈希直接定址法的变形应用。计数排序不是基于比较的排序算法&#xff0c;其核心在于将输入的数据值转化为键存储在额外开辟的数组…...

mysql时间日期函数、获取当前日期和时间、日期和时间格式化、提取日期部分、日期和时间的算术操作、其他日期函数、日期和时间的比较、日期字符串转换

获取当前日期和时间 NOW()&#xff1a;返回当前的日期和时间。CURDATE()&#xff1a;返回当前的日期。CURTIME()&#xff1a;返回当前的时间。 SELECT NOW(), CURDATE(), CURTIME(); 日期和时间格式化 DATE_FORMAT(date, format)&#xff1a;根据指定的格式字符串格式化日期…...

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&#xff08;自动配置核心注解&#xff09; 4.ComponentScan Conditional Co…...

语言的枚举

不同语言的枚举 C/C枚举本质是整型&#xff0c;在Java中是对象&#xff0c;而非基本类型&#xff0c;可通过instanceof Object判断是否是对象类型。C#与Java不同&#xff0c;枚举是值类型。C语言更纯粹&#xff0c;枚举绝对当成整数&#xff0c;可以对枚举变量用整数赋值&…...

C# Redis 框架开发技术详解

引言 Redis 是一个高性能的键值存储系统&#xff0c;广泛用于缓存、消息队列和实时分析等场景。在 C# 中&#xff0c;有几个著名的库和框架可以方便地与 Redis 进行交互。以下是几个常用的 C# Redis 库&#xff1a; StackExchange.Redis: 这是目前最流行、最推荐的 C# Redis 客…...

Rust:Result 和 Error

在 Rust 编程语言中&#xff0c;错误处理是一个核心部分&#xff0c;用于确保程序的健売性和可靠性。Rust 通过 Result 枚举和 Error 特质&#xff08;trait&#xff09;来处理错误。 Result 枚举 Result 是一个泛型枚举&#xff0c;用于表示一个操作可能成功或失败。它有两个…...

Python基础(八)——MySql数据库

一.数据库 【库——>表——>数据】 借助数据库对数据进行组织存储&#xff0c;借助SQL语言对数据库、数据进行操作管理 Mysql数据库 下载&#xff1a;https://www.mysql.com/ 查看是否安装配置成功&#xff1a; 安装DBeaver用于Mysql数据库图形化 安装&#xff1a;…...

统一网关--gateway(仅供自己参考)

1、网关的概念&#xff1a; 2、网关的功能&#xff1a; &#xff08;1&#xff09;&#xff1a;身份认证和权限校验 &#xff08;2&#xff09;&#xff1a;服务路由&#xff08;具体的业务路由到具体的服务&#xff09;&#xff0c;负载均衡&#xff08;多台服务的话&#xff…...

【Leetcode152】分割回文串(回溯 | 递归)

文章目录 一、题目二、思路三、代码 一、题目 二、思路 具体例子和步骤&#xff1a;假设 s "aab"&#xff0c;步骤如下&#xff1a; 初始状态&#xff1a; s "aab"path []res [] 第一层递归&#xff08;外层循环&#xff09;&#xff1a; path []检…...

基于BiGRU+Attention实现风力涡轮机发电量多变量时序预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…...

深入探究 Flask 的应用和请求上下文

目标 读完本文后&#xff0c;您应该能够解释&#xff1a; 什么是上下文哪些数据同时存储在应用程序和请求上下文中在 Flask 中处理请求时&#xff0c;处理应用程序和请求上下文所需的步骤如何使用应用程序和请求上下文的代理如何在视图函数中使用current_app和代理request什么…...

C++学习笔记(30)

二十三、随机数 在实际开发中&#xff0c;经常用到随机数&#xff0c;例如&#xff1a;纸牌的游戏洗牌和发牌、生成测试数据等。 函数原型&#xff1a; void srand(unsigned int seed); // 初始化随机数生成器&#xff08;播种子&#xff09;。 int rand(); // 获一个取随机数。…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

多种风格导航菜单 HTML 实现(附源码)

下面我将为您展示 6 种不同风格的导航菜单实现&#xff0c;每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...