Vue3 —— watchEffect 高级侦听器
- 该文章是在学习 小满vue3 课程的随堂记录
- 示例均采用
<script setup>,且包含typescript的基础用法
前言
Vue3 中新增了一种特殊的监听器 watchEffect,它的类型是:
function watchEffect(effect: (onCleanup: OnCleanup) => void,options?: WatchEffectOptions
): StopHandle
下面通过实例来理解下它的用法
一、简单使用
- 第一个参数就是要运行的
副作用函数 effect - 函数内
用到哪些数据才会监听哪些数据 - 且会
立刻执行一次(immediate)
<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
import { ref, watchEffect } from "vue";const message1 = ref<string>("飞机");
const message2 = ref<string>("火车");watchEffect(() => {console.log("message1========>,", message1);// 不使用 message2 就不会监听 message2// console.log("message2========>,", message2);
});
二、副作用 effect 的参数
- effect 的参数 也是一个
函数,用来注册清理回调。 清理回调会在该副作用下一次执行前被调用,可以用来清理无效的副作用,例如等待中的异步请求
<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
import { ref, watchEffect } from "vue";const message1 = ref<string>("飞机");
const message2 = ref<string>("火车");watchEffect((onCleanup) => {console.log("message11111========>,", message1);console.log("message22222========>,", message2);onCleanup(() => {console.log("onCleanup —————— 下一次运行之前要做的事");});
});
页面刷新,首次打印:

更改输入框的值,再次打印:

三、watchEffect 返回值
- 返回值是一个用来
停止侦听器的函数,调用后不再侦听 - 需要注意的是:停止时,
不影响最后一次 onCleanup 的执行
<input type="text" v-model="message1" />
<br />
<input type="text" v-model="message2" />
<br />
<button @click="stopWatch">停止watchEffect</button>
const stop = watchEffect((onCleanup) => {console.log("message11111========>,", message1);console.log("message22222========>,", message2);onCleanup(() => {console.log("onCleanup —————— 下一次运行之前要做的事");});
});const stopWatch = () => {stop();
};
页面刷新,首次打印:

更改输入框的值,再次打印:

点击按钮 停止侦听,再次打印:

四、options配置
watchEffect 的第二个参数是配置项:
flush:watch 的执行顺序pre|post|sync,默认:pre,具体含义可以看上一篇 watch 中的解释- 一般需要在 dom 更新之后再获取的情况,可以设置为
post
onTrack用于开发环境调试onTrigger用于开发环境调试
<input id="ipt" v-model="iptVal" />
const iptVal = ref<string>("aa");watchEffect(() => {// 测试 flushconst spanEle = document.getElementById("ipt");// flush = pre 时,打印 null; flush = post 时,打印节点console.log("spanEle========>,", spanEle); // 修改 iptVal 测试 onTrack、onTriggerconsole.log("iptVal============>", iptVal.value);},{flush: "post",// 收集依赖时触发onTrack: () => {debugger;},// 更新时触发onTrigger: () => {debugger;},}
);
五、周边 api
watchPostEffect():watchEffect()使用flush: 'post'选项时的别名watchSyncEffect():watchEffect()使用flush: 'sync'选项时的别名
相关文章:
Vue3 —— watchEffect 高级侦听器
该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>,且包含 typescript 的基础用法 前言 Vue3 中新增了一种特殊的监听器 watchEffect,它的类型是: function watchEffect(effect: (onCleanup: OnCleanup) > void,o…...
Java异步子线程读取主线程参数的若干好玩场景
在开发过程中,我们难免会因为性能、实时响应等,需要异步处理的一些事务,并且在子线程中有时我们还需要获取主线程相关的参数。下面有若干方案可以实现上述场景,但会出现一定的问题。 场景1-基础场景 在主线程中开启子线程&#x…...
Android 视频开发
在 Android 平台上进行视频开发,您需要掌握以下关键知识点,以确保能够成功地开发和调试视频应用程序: Android视频架构: 了解 Android 的视频系统架构,包括视频捕获、编码、解码、渲染和显示等。 视频格式和编解码&am…...
【计算机网络篇】UDP协议
✅作者简介:大家好,我是小杨 📃个人主页:「小杨」的csdn博客 🐳希望大家多多支持🥰一起进步呀! UDP协议 1,UDP 简介 UDP(User Datagram Protocol)是一种无连…...
LeetCode 2682. 找出转圈游戏输家
【LetMeFly】2682.找出转圈游戏输家 力扣题目链接:https://leetcode.cn/problems/find-the-losers-of-the-circular-game/ n 个朋友在玩游戏。这些朋友坐成一个圈,按 顺时针方向 从 1 到 n 编号。从第 i 个朋友的位置开始顺时针移动 1 步会到达第 (i …...
数据结构单链表
单链表 1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链 接次序实现的 。 在我们开始讲链表之前,我们是写了顺序表,顺序表就是类似一个数组的东西࿰…...
自定义WEB框架结合Jenkins实现全自动测试
自定义WEB框架结合Jenkins实现全自动测试 allure生成 allure生成 1.allure–纯命令运行 -固定的–稍微记住对应的单词即可。2 安装,2个步骤: 1.下载allure包,然后配置环境变量。 https://github.com/allure-framework/allure2/releases/tag/2.22.4 2.在…...
PHP加密与安全的最佳实践
PHP加密与安全的最佳实践 概述 在当今信息时代,数据安全是非常重要的。对于开发人员而言,掌握加密和安全的最佳实践是必不可少的。PHP作为一种常用的后端开发语言,提供了许多功能强大且易于使用的加密和安全性相关函数和类。本文将介绍一些P…...
SQL Server数据库无法连接
问题如下: 原因:sql server服务器未开启 解决方法:以管理员身份打开cmd,输入:net start mssqlserver。...
videojs 播放视频
背景:在项目中使用第三方插件videojs进行播放视频,点击事件更改播放的数据源。 一、视频相关理论 (一)、背景 网络流媒体的呈现形式分为两种:直播点播 (二)、流媒体的3种协议 分类:HTTPHLSRTMP定义:基于HTTP的流媒体…...
vue强制刷新变量
在前端开发中,我们经常需要变量的值实时响应到界面上。Vue就是一个非常强大的前端框架,它的数据绑定能够非常好地实现变量与界面的同步更新。但是有时候,我们需要强制刷新某个变量的值,以便界面能及时地反映出它的变化。本文将介绍…...
[QCA6174]QCA6174 5G WiFi DFS处理逻辑分析及雷达误检率高优化规避
DFS认证信息 WIFI DFS测试要求 Master设备需要测试的项目 4.6.2.1 Channel Availability Check 信道可用性检查 定义其作为雷达脉冲检测机制,当雷达脉冲出现时所占用的信道需要能被设备检测到已经被占用。当相关信道未被占用时,这些信道被称为Avaliable Channel可用信道 …...
预防SQL漏洞注入和规避网络攻击
前言: 虽然近些年SQL注入已经被各类的安全开发框架规避了绝大部分,但SQL注入作为一种最原始的攻击手段之一,破坏力仍然十分强大,因为它直捣黄龙数据中心。所以未雨绸缪,各位不可不重视。 预防SQL注入方法措施: 服务器…...
《Go 语言第一课》课程学习笔记(一)
配好环境:选择一种最适合你的 Go 安装方法 选择 Go 版本 一般情况下,建议采用最新版本。因为 Go 团队发布的 Go 语言稳定版本的平均质量一直是很高的,少有影响使用的重大 bug。可以根据不同实际项目需要或开源社区的情况使用不同的版本。 有…...
网络安全 Day29-运维安全项目-iptables防火墙
iptables防火墙 1. 防火墙概述2. 防火墙2.1 防火墙种类及使用说明2.2 必须熟悉的名词2.3 iptables 执行过程※※※※※2.4 表与链※※※※※2.4.1 简介2.4.2 每个表说明2.4.2.1 filter表 :star::star::star::star::star:2.4.2.2 nat表 2.5 环境准备及命令2.6 案例01:…...
SQL 复习 03
函数与关键字 用法说明round(x, n)四舍五入,x为浮点数,n为保留的位数ceil(x)向上取整floor(x)向下取整truncate(x, n)截断x,n为保留的位,该位之后的数值置零,位数表示示例:321.123,其中小数点前…...
出现 sudo: docker: command not found 的解决方法
目录 1. 问题所示2. 原理分析3. 解决方法3.1 未成功安装引起3.2 环境变量引起1. 问题所示 安装了docker,但是执行docker命令的时候,提示该问题: ubuntu@10-41-104-1:~$ sudo docker ps -a sudo: docker: command not foundubuntu@10-41-104-1:~$ sudo apt-get install doc…...
FastApi-1-结合sql 增/查demo
目录 FastAPI学习记录项目结构部分接口/代码展示感受全部代码 FastAPI学习记录 fastapi已经学习有一段时间,今天抽时间简单整理下。 官网介绍: FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Py…...
Spring学习笔记3
使用注解开发: Component 组件开发相当于 Value(“xxx”)可以对属性进行赋值 package pojo;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; //等价于<bean id"user" class"po…...
springboot艰难版本升级之路!! springboot 2.3.x版本升级到2.7.x版本
文章目录 1.缘起1.1 升级到版本2.7.12启动失败,而且没有报错信息1.2 application-dev.yml 配置加载问题1.3 openfeign依赖问题汇总1.4 datasource报错1.5 MySQL驱动升级1.6 循环依赖报错1.7 跨域错误临时总结1.缘起 由于服务需要搭建链路追踪, 需要把springboot版本升级到2.7.1…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...
