《Vue进阶教程》第八课:watch()函数的基本使用

ops/2024/12/16 19:07:59/

 往期内容:

《Vue零基础入门教程》合集(完结)

《Vue进阶教程》第一课:什么是组合式API

《Vue进阶教程》第二课:为什么提出组合式API

《Vue进阶教程》第三课:Vue响应式原理

《Vue进阶教程》第四课:reactive()函数详解

《Vue进阶教程》第五课:ref()函数详解(重点)

《Vue进阶教程》第六课:computed()函数详解(上)

《Vue进阶教程》第七课:computed()函数详解(下) 

1) 基本使用

📝侦听器watch()函数

1.参数:

a.侦听的数据源

①可以是引用了响应式对象的副作用函数

②以上类型组成的数组

③响应式对象(ref, reactive, computed)

b.对应的回调: 当数据改变时, 执行的回调函数

c.选项:

①immediate: 创建时立即执行回调

②flush: 设置回调执行的时机

③deep: 当数据是对象, 开启深度侦听

2.作用: 侦听数据源的改变, 当数据源改变时, 重新执行回调

3.返回: unwatch方法

示例1

javascript">// 1. 数据源是ref(响应式对象)
const count = ref(0)
watch(count, () => {console.log('count的值改变了:', count.value)
})

示例2

javascript">// 2. 数据源是reactive对象(默认是深度侦听)
const stu = reactive({name: 'xiaoming',age: 20,gf: {name: 'xiaomei',city: {name: 'wuhan',},},
})
watch(stu, () => {// 由于这种方式会递归遍历每一层属性, 效率不高, 一般不用console.log('侦听整个reactive对象, 是深度侦听的')
})

由于侦听对象时会递归遍历每一层属性, 效率不高, 一般不用
一般情况下, 需要侦听的往往是某个具体的属性
此时, 我们需要包装一个函数, 在函数中引用该属性. 这个函数也是副作用函数
示例3

错误的写法

javascript">// 不能直接这样写. stu.age相当于读取出了具体的值
watch(stu.age, () => {console.log('不会生效')
})

image.png


●对于值类型, 不能直接侦听
●对于对象类型, 依然可用
示例4

正确的写法

javascript">// 通过一个副作用函数包装, 在副作用函数中引用需要侦听的属性
watch(() => stu.age,() => {console.log('会生效, 常用')}
)

示例5

javascript">// 几乎不用
watch([count, () => stu.age], () => {console.log('侦听的数据源是数组的情况')
})


http://www.ppmy.cn/ops/142440.html

相关文章

如何使用 Docker Compose 创建 LAMP 环境 ?

现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装…

密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义:分布式系统或集群模式下,多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能:确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…

爬虫基础知识点

最近看了看爬虫相关知识点,做了记录,具体代码放到了仓库,本文仅学习使用,如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的,这个网站可以根据url或者文本等数据自动生成流程图,挺…

Spring WebFlux 和 Reactor关系

Spring WebFlux 和 Reactor 是紧密相关的,Spring WebFlux 基于 Reactor 构建,两者共同推动了响应式编程在 Java 开发中的应用。以下是它们的具体关系和分工: 1. Reactor: 响应式编程核心库 Reactor 是一个响应式编程库,实现了Rea…

elasticsearch 使用预处理将JSON类型转换成Object类型

文章目录 使用 Ingest Pipeline 和 json 处理器示例:使用Ingest Pipeline 写入数据使用该Pipeline 在Elasticsearch(ES)中,您可以使用“预处理”(通常是通过处理器、Ingest Pipeline等方式)将JSON类型的数据…

设计模式学习之——适配器模式

适配器模式(Adapter Pattern),又称作变压器模式(因为这两者都体现了“转换”或“适配”的核心概念),是一种结构型设计模式。它将一个类的接口转换成客户端所期望的另一种接口,从而使得原本因接口…