vue3中的watch函数

watch函数

作用:监听数一个或者多个数据的变化,数据变化时执行回调函数,两个额外的参数:1、immediate(立即执行)2、deep(深度监听)

监听单个数据:

<script setup>
import { ref,watch} from 'vue'
const count = ref(0)
const setCount = () => {count.value++
}
watch(count,(newVal,oldVal) => {console.log('count变化了',newVal,oldVal)
})
</script>
<template><div><button @click="setCount">{{ count }}</button></div>
</template>

监听多个数据:

<script setup>
import { ref,watch} from 'vue'
const count = ref(0)
const changeCount = () => {count.value++
}
const name = ref('con')
const changeName = () => {name.value = 'pc'
}watch([count,name],([newCount,newName],[oldCount,oldName]) => {console.log('有值发生变化了',[newCount,newName],[oldCount,oldName])}
)
</script>

immediate:在监听器创建时立即触发回调,响应式数据变化之后继续执行回调

watch(count,() =>{console.log('count变化了')
},{immediate: true
})

deep

通过watch监听的ref对象默认是浅层监听的,直接修改嵌套的对象属性不会触发回调执行,需要开启deep选项

const state = ref({ count:0 })
watch(state,() => console.log('数据变化了'))
const changeStateByCount = () => {
//直接1修改属性 -> 不会触发回调
state.value.count++
}//深度监听
watch(state,() => {console.log('count变化了')
},{deep: true
})

deep开启之后,对象中的任意一个属性发生了变化以后都会触发回调

精确监听对象的某个属性:

在不开启deep的前提下,监听age的变化,只有age发生变化的时候才会发生回调

const info = ref({name: 'cp',age: 18
})
watch(
//监听具体某一属性() => info.value.age,() =>console.log('age发生变化了')
)

总结:

1、作为watch函数的第一个参数,ref对象不需要添加.value

2、watch可以监听多个数据,使用数组封装

3、不开启deep,直接修改嵌套属性不会触发回调

4、不开启deep,想在某个层次比较深的属性变化时执行回调:可以把第一个参数写成函数的写法,这次要监听具体的属性

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

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

相关文章

【Vue】Vue3 安装 Tailwind CSS 入门

初始化 Vue 3 项目 npm install -g vue/cli vue create my-project安装 Tailwind CSS 进入你的项目目录&#xff0c;然后安装 Tailwind CSS 和其依赖项&#xff1a; npm install -D tailwindcss postcss autoprefixer配置 PostCSS Tailwind CSS 需要通过 PostCSS 进行处理。…

Python酷库之旅-第三方库Pandas(029)

目录 一、用法精讲 74、pandas.api.interchange.from_dataframe函数 74-1、语法 74-2、参数 74-3、功能 74-4、返回值 74-5、说明 74-6、用法 74-6-1、数据准备 74-6-2、代码示例 74-6-3、结果输出 75、pandas.Series类 75-1、语法 75-2、参数 75-3、功能 75-4…

单例模式 单例模式在多线程中是否线程安全, 如何保证线程安全。

单例模式 顾名思义就是在整个运行时域&#xff0c;一个类只有一个实例对象 懒汉式和饿汉式 1.懒汉式&#xff1a;类加载时不实例化&#xff0c;在第一次被调用时才进行实例化 下面展示一个 单例模式懒汉式代码片。 package com.haina.java08;public class Single {//构造器私…

mybatis-plus getMap sum求和 between时间查询

oracle 语法 QueryWrapper<Xxxx> eq new QueryWrapper<Xxxx>().select("NVL(sum(AAA),0) AS AA","NVL(sum(BBB),0) AS BB","NVL(sum(CCC),0) AS CC").eq("T_ID", id).apply("CREATE_TIME between to_date({0}, YYYY…

牛客 7.13 月赛(留 C逆元 Ddp)

B-最少剩几个&#xff1f;_牛客小白月赛98 (nowcoder.com) 思路 奇数偶数 奇数&#xff1b;奇数*偶数 奇数 所以在既有奇数又有偶数时&#xff0c;两者结合可以同时删除 先分别统计奇数&#xff0c;偶数个数 若偶个数大于奇个数&#xff0c;答案是偶个数-奇个数 若奇个数…

六边形动态特效404单页HTML源码

源码介绍 动态悬浮的六边形,旁边404文字以及跳转按钮,整体看着像科技二次元画风,页面简约美观,可以做网站错误页或者丢失页面,将下面的代码放到空白的HTML里面,然后上传到服务器里面,设置好重定向即可 效果预览 完整源码 <!DOCTYPE html> <html><head…

【17】Android 线程间通信(二) - Handler

概述 记得上篇文章我们留下的问题吗&#xff1f;如果还没有看过上一篇讲解Handler基本原理文章的同学可以补一下知识。Android 线程间通信(一) - Handler 回到正题&#xff0c;这次我们将一下上一篇文章留下问题中的几个&#xff0c;idleHandler & syncBarrier。 同步屏…

PyCharm查看文件或代码变更记录

背景&#xff1a; Mac笔记本上有一个截图的定时任务在运行&#xff0c;本地Python使用的是PyCharm IDE&#xff0c;负责的同事休假&#xff0c;然后定时任务运行的结果不符合预期&#xff0c;一下子不知道问题出现在哪里。 定位思路&#xff1a; 1、先确认网络、账号等基本的…

Qt 快速保存配置的方法

Qt 快速保存配置的方法 一、概述二、代码1. QFileHelper.cpp2. QSettingHelper.cpp 三、使用 一、概述 这里分享一下&#xff0c;Qt界面开发时&#xff0c;快速保存界面上一些参数配置的方法。 因为我在做实验的时候&#xff0c;界面上可能涉及到很多参数的配置&#xff0c;我…

实战打靶集锦-31-monitoring

文章目录 1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 ssh服务4.2 smtp服务4.3 http/https服务 5. 系统提权5.1 枚举系统信息5.2 枚举passwd文件5.3 枚举定时任务5.4 linpeas提权 6. 获取flag 靶机地址&#xff1a;https://download.vulnhub.com/monitoring/Monitoring.o…

django学习入门系列之第四点《BootStrap依赖》

文章目录 往期回顾 BootStrap依赖于JavaScript的类库&#xff0c;JQuery下载 下载JQuery&#xff0c;在界面上应用JQuery 在页面上应用BootStrap和avaScript的类库【JQuery是avaScript的类库】 JQuery的官网&#xff1a; jQuery 如果要应用JQuery 则要在body里面导入文件…

[Java后端面试题1]2024-07-16

TIME_WAIT与CLOSE_WAIT的区别 TIME_WAIT 和 CLOSE_WAIT 是 TCP 连接状态的一部分&#xff0c;用于描述连接在不同阶段的状态。它们有以下主要区别&#xff1a; TIME_WAIT 定义: 这是主动关闭连接的一方在发送了最后一个 ACK 后进入的状态。出现原因: 确保远程 TCP 协议收到最…

react中状态管理useState

[secret,setSecret]useState(null)useEffect(() > {http.get(/api/suggest/qrcode/, { params: { uniqueid: store.uniqueid } }).then(res > {//异步获取的值不是实时返回的setSecret(res.secret);return http.get(/api/suggest/userinfo/, { params: { secret: secret …

Mysql8.4参考手册走读(六)

MySQL 8.4 常见问题解答&#xff1a;服务器 SQL 模式 问题答案什么是服务器 SQL 模式&#xff1f;服务器 SQL 模式定义了 MySQL 应支持的 SQL 语法和它应该执行哪种类型的数据验证检查。这使在不同环境中使用 MySQL 变得更加容易&#xff0c;并且将 MySQL 与其他数据库服务器一…

MySQL(7)内外连接+索引

目录 1.内外连接; 2. 索引; 1.内外连接: 1.1内连接: 语法: select 字段 from 表名 inner join 表名 on 字段限制; 1.2 外连接: 分为左右外连接; (1)左外连接: 语法: select * from 表名 left join 表名 on 字段限制. &#x1f330;查询所有学生的成绩&#xff0c;如果这个学生…

【C++】编程新思想,通过封装新的类创建新的数据类型

我们可以通过封装一个新的C++类来实现新的数据类型的定义。 目录 优点: 主要方法: show(); reset(); use(); change(); operator++(): operator++(int); operator--() ; self_increase(); self_reduction(); 完整代码: 优点: 用新的名字代替原有数据类型名…

什么才是好用的大模型?

随着大模型在千行百业的逐步落地&#xff0c;中国基础大模型正直面来自用户端的诸多拷问。 近日&#xff0c;随着OpenAI宣布禁止中国用户使用其API&#xff0c;更多的国产大模型都在提供替代方案和优惠措施&#xff0c;来吸引和支持开发者进行用户迁移。 这既是一次挑战&…

多多OJ评测系统 前端项目环境初始化 安装Vue脚手架 引入Arco Design组件

目录 确定环境 命令行输入 装一下脚手架 监测一下是否安装成功 创建一个项目 选择一系列的配置后 我们打开webStorm 配置脚手架后我们先运行 我们这边能获取到网址 其实我们脚手架已经帮我们做到了 接下来要引入相关的组件 选择用npm进行安装 我们建议的是完整引入…

UDP客户端、服务端及简易聊天室实现 —— Java

UDP 协议&#xff08;用户数据包协议&#xff09; UDP 是无连接通信协议&#xff0c;即在数据传输时&#xff0c;数据的发送端和接收端不建立逻辑连接&#xff0c;简单来说&#xff0c;当客户端向接收端发送数据时&#xff0c;客户端不会确认接收端是否存在&#xff0c;就会发出…

windows镜像下载网站

一个专注于提供精校、完整、极致的Windows系统下载服务的仓储站&#xff0c;网站托管于Github。 网站&#xff1a;https://hellowindows.cn/ 下载方式&#xff1a;ED2k&#xff0c;BT&#xff0c;百度网盘 MSDN - 山己几子木&#xff0c;提供Windows 11、Windows 10等不同版本…