watch 和 watchEffect 的使用

ref 监听

监听 ref 值,ref.value 是基本数据类型

  /*** 通过 myName.value 更换值时会触发* 通过 ref 定义基本数据类型时,不能监听 xxx.value 因为这获取的就是一个具体值*/let myName = ref('苹果')watch(myName, (newValue, oldValue) => {// myName: 香蕉 苹果console.log('myName:', newValue, oldValue)})myName.value = '香蕉'

监听 ref 值,ref.value 是引用数据类型

  /*** 当监听的ref是引用类型时,仅通过 rex.value 更换值时才会触发监听* 如果需要监听引用类型内部的变化,则需要添加深度监听 { deep: true }*/let myRefObj = ref({ name: '苹果' })watch(myRefObj, (newValue, oldValue) => {console.log('myRefObj:', newValue, oldValue)})myRefObj.value = '香蕉'

监听 ref.value 值

ref.value 必须是引用类型。如果 ref.value 是基本数据类型,则无法监听

  /*** myRefObj.value 为对象,等同于 监听一个 reactive 对象,侦听器会自动启用深层模式* 当给 myRefObj.value 赋值新对象时监听不会执行,但 template 中数据还是响应式的*/let myRefObj = ref({name: '苹果'})watch(myRefObj.value, (newValue, oldValue) => {console.log('myRefObj:', newValue, oldValue)})myRefObj.value.name = '香蕉' // 会监听到//  myRefObj.value = {name: '栗子'} // 不会监听到

reactive 监听

监听 reactive 对象的基本数据类型

  /*** 通过 myObj.name 更换值时会触发(myObj.name 需是基本数据类型)* 当直接侦听一个响应式对象时,侦听器会自动启用深层模式*/let myObj = reactive({ name: '小明', age: 20, info: { address: 'bj' } })watch(myObj, (newValue, oldValue) => {// myObj:都是 {name: '小红', age: 20}console.log('myObj:', newValue, oldValue)})myObj.name = '小红'

监听 reactive 对象的引用数据类型

  /*** 监听 myObj.info 值* 仅更换 myObj.info 内的数据时才会被监听到* 通过 reactive 定义引用类型时,如果通过 xxx.xx 获取的是基本类型时,则不能监听 xxx.xx 数据;如果通过 xxx.xx 获取的是引用类型时,则可以监听 xxx.xx 数据*/let myObj = reactive({ name: '小明', age: 20, info: { address: 'bj' } })watch(myObj.info, (newValue, oldValue) => {console.log('myObj.info:', newValue, oldValue)})myObj.info.address = 'sh'

函数监听

一个函数,必须返回一个值,只有当值发生变化时,才会触发回调

监听 ref.value 数据时

  • 当 ref.value 返回基本数据类型时,通过ref.value值就可以监听到
  • 当 ref.value 返回引用数据类型时,仅通过修改 ref.value值时可以被监听到,当修改对象内部值时是无法被监听到,此时需要添加 { deep: true} 启用深度监听
  let myName = ref('苹果')watch(() => myName.value,(newValue, oldValue) => {console.log('myName:fn:', newValue, oldValue)})myName.value = '香蕉'

监听 ref 对象时

不管是监听 reactive 对象,还是监听 ref 对象,都不会自动启用深度监听,必须通过添加 { deep: true },这样当修改对象内部数据时才会被监听到

  let myName = ref('苹果')watch(() => myName,(newValue, oldValue) => {console.log('myName:deep:fn:', newValue, oldValue)},{ deep: true })myName.value = '香蕉'

监听 reactive 数据的基本类型时

  let myObj = reactive({ name: '小明', age: 20, info: { address: 'bj'} })watch(() => myObj.name,(newValue, oldValue) => {console.log('myObj:fn:', newValue, oldValue)})myObj.name = '小红'

监听 reactive 数据的引用类型时

  /*** 这里返回的是对象对应的地址*/let myObj = reactive({ name: '小明', age: 20, info: { address: 'bj'} })watch(() => myObj.info,(newValue, oldValue) => {console.log('myObj:deep:fn:', newValue, oldValue)},{ deep: true })myObj.name = '小红'

注意:myObj.info 是一个对象,当启用深度监听后,修改 myObj.info 为另一个对象或修改 myObj.info 内部属性的值时都会触发回调

侦听多个来源

  // 当侦听多个来源时,回调函数接受两个数组,分别对应来源数组中的新值和旧值watch([fooRef, barRef], ([foo, bar], [prevFoo, prevBar]) => {/* ... */})

watchEffect使用

watchEffect 首次加载先执行一次,即便是空函数也会执行

  watchEffect(() => {})

watch 和 watchEffect 特点

watch特点

  • 懒执行,仅当数据变化时执行(immediate: true 除外)
  • 更加明确需要侦听的数据源,更精准的控制回调函数的触发时机
  • 可以访问所侦听状态的前一个值和当前值

watchEffect特点

  • 首次加载会执行一次,即便是空函数
  • 自动追踪所有能访问到的响应式属性,任一属性发生变化都会触发回调函数
  • 无法获取前一个值和当前值

flush: 调整回调函数的刷新时机

  • pre: 默认值,回调会在 Vue 组件更新之前被调用,此时在回调中访问的 DOM 将是 Vue 更新之前的状态
  • post: Vue 组件更新之后调用侦听器的回调函数。此时在回调函数中访问的 DOM 将是 Vue 更新之后的状态
  • sync: 同步执行,当侦听到变化时回调函数立即执行,执行完成后才接着执行后面的代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL查询优化技巧和10个案例展示

优化MySQL查询的实战技巧: **避免使用SELECT ***:只获取需要的列,这样可以减少数据传输量,提高查询效率。使用索引:为查询频繁的列创建索引,可以显著提高查询速度。但请注意,索引并非万能&…

大华 DSS 数字监控系统 attachment_getAttList.action SQL 注入漏洞复现

0x01 产品简介 大华 DSS 数字监控系统是大华开发的一款安防视频监控系统,拥有实时监视、云台操作、录像回放、报警处理、设备管理等功能。 0x02 漏洞概述 大华 DSS存在SQL注入漏洞,攻击者 /portal/attachment_getAttList.action 路由发送特殊构造的数据包,利用报错注入获…

林浩然与杨凌芸的Java奇缘:抽象类、接口与多态的编程三部曲

林浩然与杨凌芸的Java奇缘:抽象类、接口与多态的编程三部曲 The Java Odyssey of Lin Haoran and Yang Lingyun: A Trio of Programming Wisdom with Abstract Classes, Interfaces, and Polymorphism 在代码王国里,住着两位程序员明星——林浩然和杨凌芸…

如何理解S参数的三大特性

提到S参数的时候经常会涉及一些概念,如无源性、因果性、互易性等,本文将逐一介绍这些特性。 无源性(Passivity) 对于S参数所表征的网络,设计者需要它是一个无源的系统,即满足能量守恒,以二端口网…

should be also和should also be

will also be 是正确的 但老师和新概念的两个说法都没有错. will also be 是固定搭配.就好像will not be一样, 限定词加在be前.老师说的是陈述之类的句型 Nbe动词alson/adj/动词短语.例:He is also good at physic. should be also还是should also be also应该插在…

生存类游戏《幻兽帕鲁》从部署服务器到开始体验全过程

SteamDB数据显示,《幻兽帕鲁》上线24小时内,在线人数峰值便突破200万,跻身Steam历史排行榜第二位。随着热度进一步发酵,《幻兽帕鲁》官方发布推文称,游戏发售不到6天,销量已经突破了 800万份。欢迎大家在阿…

学习笔记:正则表达式

正则表达式是文本处理方面功能最强大的工具之一。正则表达式语言用来构造正则表达式,最终构造出来的字符串就称为正则表达式,正则表达式用来完成搜索和替换操作。 本文参考《正则表达式必知必会(修订版)》《Learning Regular Exp…

CentOS 7 安装 install abiword

安装 1.下载noarch安装包 wget http://repo.iotti.biz/CentOS/7/noarch/lux-release-7-1.noarch.rpm 2.安装noarch rpm -Uvh lux-release-7-1.noarch.rpm 3.安装abiword yum -y install abiword

冻雨 冰雨。冻雨与冰雹的区别?

冻雨,也被称为冰雨 是一种降水形式,它发生在冷空气层覆盖在地面上方较薄的暖空气层之下。在这种情况下,雨水通过暖空气层下降时变成液态,但当它接触到冰点以下的地面或其他物体时,立即冻结形成冰层。这可以导致道路、…

Python tkinter (15) —— PhotoImage

本文主要介绍Python tkinter PhotoImage图像应用及示例。 系列文章 python tkinter窗口简单实现 Python tkinter (1) —— Label标签 Python tkinter (2) —— Button标签 Python tkinter (3) —— Entry标签 Python tkinter (4) —— Text控件 Python tkinter (5) 选项按…

用于制作耳机壳的倒模专用UV树脂有什么特点?

制作耳机壳的UV树脂耳机壳UV胶具有以下特点: 快速固化:UV树脂可以在紫外线的照射下迅速固化,大大缩短了制作时间。高硬度与高耐磨性:UV树脂具有较高的硬度和耐磨性,能够提供良好的保护效果。透明度高:UV树…

vscode预览github上的markdown效果

需要安装的插件有: Github Markdown Preview Markdown Checkboxes Markdown Emoji Markdown footnotes Markdown Preview Github Styling Markdown Preview Mermaid Support Markdown yaml Preamble ctrlshiftv结合双页功能

视频上传 - 断点续传那点事

在上一篇文章中,我们讲解了分片上传的实现方式。在讲解断点续传之前,我要把上篇文章中留下的问题讲解一下。读过上一篇文章的小伙伴们都知道,对于分片上传来说,它的传输方式分为2种,一种是按顺序传输,一种是…

高亮显示不一致

先准备好测试文件 [rootnode4 ~]# cat 2.1 No. Table Name Src Count Des Count Result 1 sbtest1 100 100 PASS 2 sbtest2 200 300 NOTPASS 3 sbtest3 150 150 …

Go语言每日一练 ——链表篇(三)

传送门 牛客面试笔试必刷101题 ---------------- 链表中的节点每k个一组翻转 题目以及解析 题目 解题代码及解析 package main import _"fmt" import . "nc_tools" /** type ListNode struct{* Val int* Next *ListNode* }*//*** 代码中的类名、方…

python数据容器之字典相关的操作

字典是Python中常用的数据容器之一,它可以存储键值对,其中键是唯一且不可变的,值可以是任意类型的数据。以下是一些字典相关的操作: 创建字典: my_dict {} # 创建空字典 my_dict2 {key1: value1, key2: value2} # …

STM32 硬件随机数发生器(RNG)

STM32 硬件随机数发生器 文章目录 STM32 硬件随机数发生器前言第1章 随机数发生器简介1.1 RNG主要特性1.2.RNG应用 第2章 RNG原理框图第3章 RNG相关寄存器3.1 RNG 控制寄存器 (RNG_CR)3.2 RNG 状态寄存器 (RNG_SR)3.3 RNG 数据寄存器 (RNG_DR) 第3章 RNG代码部分第4章 STM32F1 …

安装flash-attention失败的终极解决方案

安装大语言模型的时候,有时候需要安装flash-attention来加速。比如说通义千问里的安装方法: git clone https://github.com/Dao-AILab/flash-attention cd flash-attention && pip install . 我们经常安着安着就卡住了,比如说下面的…

三月济南举办2024第八届生物饲料高质量发展论坛

饲料工业发展空间大,产量持续增长,品质与质量也在不断提高,饲料工业是支撑现代畜牧水产养殖业发展的基础产业,是关系到城乡居民动物性食品供应的民生产业。“十四五”时期是我国由全面建设小康社会向基本实现社会主义现代化迈进的…

(Note)子供向 Children‘s Oriented

子供向是一个来自日语的词汇,意指专门为儿童设计的作品或内容。 这个概念强调作品的受众群体主要是儿童,但也并不排除其他年龄层的观众。在动画领域,子供向通常指的是面向儿童的动画作品,这些作品的内容设计得既适合儿童欣赏&…