Vue3【十三】watch监视

Vue3【十三】watch监视

Vue3 中的watch祝你能监视以下四种数据

  1. ref 定义的数据
  2. reactive定义的数据
  3. 函数返回一个值
  4. 一个包含上述内容的数组

案例截图

watch监视

目录结构

在这里插入图片描述

案例代码

Person.vue

<template><div class="person"><!-- <h1>Watch情况1:监视【ref】定义的【基本类型】的数据</h1> --><!-- <h2>当前求和:{{ sum }}</h2><button @click="changeSum">累加+1</button> --><!-- <h1>Watch情况2:监视【ref】定义的【对象类型】的数据</h1> --><!-- <h1>Watch情况3:监视【reactive】定义的【对象类型】的数据</h1><h2>名字:{{ person.name }}</h2><h2>年龄:{{ person.age }}</h2><button @click="changeName">改名字</button><button @click="changeAge">改年龄</button><button @click="changePerson">改人</button> --><!-- <h1>Watch情况4:监视返回值函数 的数据</h1> --><h1>Watch情况5:监视上述多个数据</h1><h2>名字:{{ person.name }}</h2><h2>年龄:{{ person.age }}</h2><h2>汽车:{{ person.car.car1 }}、{{ person.car.car2 }}</h2><button @click="changeName">修改名字</button><button @click="changeAge">修改年龄</button><button @click="changeCar1">修改第一辆车</button><button @click="changeCar2">修改第二辆车</button><button @click="changeCar">修改整个车</button></div>
</template><script lang="ts" setup>
import { ref, reactive ,watch } from 'vue';
// Vue3 中的watch祝你能监视一下四种数据
// 1. ref 定义的数据
// 2. reactive定义的数据
// 3. 函数返回一个值
// 4. 一个包含上述内容的数组// 1. ref 定义的数据 --------------------------------
// const sum = ref(0);// 方法
// function changeSum(){
//     sum.value++;
// }// 监视 和 停止监视
// const stopWatch =  watch(sum, (newValue, oldValue) => {
//     console.log('sum变了', newValue, oldValue);
//     // 停止监视
//     if(newValue > 10){
//         stopWatch();
//     }
// })// 2. ref 定义的对象类型数据 ----------------------------
// 数据
// const person = ref({
//     name: '吕洞宾',
//     age: 18000
// })// 方法
// function changeName(){
//     person.value.name = '何仙姑';
// }
// function changeAge(){
//     person.value.age++;
// }
// function changePerson(){
//     person.value = {
//         name: '铁拐李',
//         age: 19000
//     }
// }// 监视 情况一: 监视【ref】定义的【对象类型】的数据,监视的是对象的地址值
// watch(person, (newValue, oldValue) => {
//     console.log('person变了', newValue, oldValue);
// })// 若要监视对象内部的数据,需要使用深度监视
// watch(person, (newValue, oldValue) => {
//     console.log('person变了', newValue, oldValue);
// }, {deep: true})// 监视 情况二: 监视【ref】定义的【对象类型】的数据,监视的是对象的地址值
// 立刻监视 watch的第一个参数是被监视的数据,第二个参数是监视回调函数,第三个参数是配置对象(deep,immediate等等)
// watch(person, (newValue, oldValue) => {
//     console.log('person变了', newValue, oldValue);
// },{deep:true,immediate: true})
// 若修改的是ref定义的对象中的属性,因为newValue和oldValue是同一个对象
// 若修改整个ref定义的对象,newValue是新值,newValue和oldValue是两个不同的对象// 监视 情况三: 监视【active】定义的【对象类型】的数据,且默认开启了深度监视 ----------------
// const person = reactive({
//     name: '吕洞宾',
//     age: 18000
// })
// // 方法
// function changeName(){
//     person.name = '何仙姑';
// }
// function changeAge(){
//     person.age++;
// }
// function changePerson(){
//     // 批量修改对象属性,对象还是原来对象
//     Object.assign( person , {
//         name: '铁拐李',
//         age: 19000
//     })
// }
// // 监视
// watch(person, (newValue, oldValue) => {
//     console.log('person变了', newValue, oldValue);
// })// 4. 函数返回值 -------------------------------------------------------------------------
let person = reactive({name: '吕洞宾',age: 18000,car: {car1: '奔驰',car2: '宝马'}
})
function changeName(){person.name += '何仙姑';
} 
function changeAge(){person.age++;
}
function changeCar1(){person.car.car1 = '仙鹤';
}  
function changeCar2(){person.car.car2 = '毛驴';
}
function changeCar(){person.car = {car1: '艾玛',car2: '雅马哈'}
}
// 监视 响应式对象中的某个属性,且该对象是基本类型的,需要写成函数式
// watch(() => person.name,(newValue, oldValue) => {
//         console.log('name变了', newValue, oldValue);
//     }
// )
// 监视 响应式对象中的某个属性,且该对象是对象类型的,可以直接写、也能写函数式 更推荐写函数
// 想要监视细节,需要手动开启深度监视
// watch(()=>person.car,(newValue, oldValue) => {
//         console.log('car变了', newValue, oldValue);
//     },{deep: true}
// )// 5.数组 监视多个数据---------------------------------------------------------------------------------
watch([()=>person.car.car1,()=>person.age],(newValue, oldValue) => {console.log('car1或年龄变了', newValue, oldValue);},{deep: true}
)</script><style scoped>
.person {background-color: #ff9e4f;box-shadow: 0 0 10px;border-radius: 30px;padding: 30px;
}button {margin: 0 10px;padding: 0 5px;box-shadow: 0 0 5px;;
}
</style>

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

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

相关文章

大学生学习Java路线2024版

第一阶段&#xff1a;基础入门 了解计算机基础&#xff1a; 学习基本的计算机科学知识&#xff0c;如操作系统、数据结构和算法。 Java语言概述&#xff1a; 了解Java语言的历史、特点和应用领域。 安装开发环境&#xff1a; 安装JDK和IDE&#xff08;如IntelliJ IDEA或Eclipse…

C++基础编程100题-008 OpenJudge-1.3-06 甲流疫情死亡率

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0103/06/ 描述 甲流并不可怕&#xff0c;在中国&#xff0c;它的死亡率并不是很高。请根据截止2009年12月22日各省报告的甲流确诊数和死亡数&#xff0c;计算甲流在各省的死亡率。 输入 输入仅一行&#xff…

数据中心运维管理方案

数据中心运维管理方案 随着数据中心在现代信息社会中的重要性日益增加&#xff0c;高效、可靠的运维管理方案成为保障其稳定运行的关键。本文将探讨数据中心运维管理的策略和实践&#xff0c;旨在为运维团队提供全面、系统的管理方法&#xff0c;确保数据中心在任何情况下都能…

mysql高级用法常用函数

mysql高级用法 1、自定义排序 select * from movies order by field(actors, 成龙, 靳东, 刘亦菲, 范冰冰); // 字段中存在null值 select * from movies order by field (coalesce(actors,null),成龙, 靳东, 刘亦菲, 范冰冰,null)2、空值NULL排序&#xff08;ORDER BY IF(ISN…

python中字典和集合数据存储的异同分析

1. 字典的简单说明 字典&#xff08;Dictionary&#xff09;是Python中一种非常重要和常用的数据结构。以下是字典的主要特点&#xff1a; 字典以键值对&#xff08;key-value pair&#xff09;的形式存储数据。每个键&#xff08;key&#xff09;是唯一的&#xff0c;键和值&…

Word Split Line

Word Split Line 分割线 https://download.csdn.net/download/spencer_tseng/89413772

JSON.parse的使用方法和基本定义

JSON.parse()是JavaScript中用于将JSON字符串解析为JavaScript对象的方法。 一、基本用法 JSON.parse()方法接收一个有效的JSON字符串作为参数&#xff0c;返回一个对象或数组。 如果传入的参数不是有效的JSON字符串&#xff0c;则会抛出错误。 二、参数 JSON.parse()方法可…

小柴带你学AutoSar系列一、基础知识篇(5)makefile基础

Flechazohttps://www.zhihu.com/people/jiu_sheng 小柴带你学AutoSar总目录https://blog.csdn.net/qianshang52013/article/details/138140235?spm=1001.2014.3001.5501

国内docker镜像站全军覆没 如何自己部署一个Docker镜像加速服务器?

近日&#xff0c;在使用SJTUG提供的镜像加速拉取镜像的时候死活拉不下来&#xff0c;不管是 docker hub 还是国内的某些镜像站&#xff0c;同样都无法使用&#xff0c;虽然现在还有部分可用的镜像站&#xff0c;但也说不准某一天因为某些原因同样停止提供了&#xff0c;这时候就…

MAC地址简介

一、MAC和ip地址 很多同学只知道ip地址&#xff0c;同时也知道ip在网络通讯中的重要性&#xff0c;实际上要实现网络通信的话&#xff0c;除了ip地址外还需要MAC地址的配合&#xff0c;只有在这两种地址的配合之下才能完整的实现互联网的通信。但是由于MAC地址的使用&#xff0…

华为防火墙配置 SSL VPN

前言 哈喽&#xff0c;我是ICT大龙。本期给大家更新一次使用华为防火墙实现SSL VPN的技术文章。 本次实验只需要用到两个软件&#xff0c;分别是ENSP和VMware&#xff0c;本次实验中的所有文件都可以在文章的末尾获取。话不多说&#xff0c;教程开始。 什么是VPN 百度百科解…

持续总结中!2024年面试必问 20 道分布式、微服务面试题(六)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道分布式、微服务面试题&#xff08;五&#xff09;-CSDN博客 十一、什么是服务编排和服务编排工具&#xff1f; 服务编排&#xff08;Service Orchestration&#xff09;是一种设计模式&#xff0c;用于管理…

Java核心: 类加载器

这一节我们来学习Java的类加载器&#xff0c;以及常用的类加载器实现URLClassLoader。 1. Java类加载器 类加载器用于将字节码读取并创建Class对象。我们知道JVM本身是用C写的&#xff0c;一开始执行的时候由C程序来加载并引导字节码的运行&#xff0c;这些由C编写的加载字节…

LVGL网格布局测试

一、测试1 static lv_coord_t col_dsc[] = { 80, 80, LV_GRID_FR(1), LV_GRID_TEMPLATE_LAST };static lv_coord_t row_dsc[] = { 45, LV_GRID_TEMPLATE_LAST };lv_obj_t* page = lv_img_create(lv_scr_act());lv_obj_center(page);lv_obj_set_size(page, 800, 600);isu_set_ob…

[数据集][目标检测]攀墙攀越墙壁数据集VOC格式-701张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;701 标注数量(xml文件个数)&#xff1a;701 标注类别数&#xff1a;1 标注类别名称:["fq"] 每个类别标…

htb-window-2-blue-smb

nmap msf 漏洞搜索 配置 获取flag

归一化在神经网络训练中的作用

归一化是深度学习中的一个重要概念&#xff0c;特别是在神经网络的训练过程中&#xff0c;它起着至关重要的作用。本文将深入探讨归一化在神经网络训练中的意义、不同的归一化方法&#xff0c;以及通过具体例子来说明归一化的实际效果。 一、什么是归一化&#xff1f; 归一化…

36python数据分析numpy基础之setxor1d求两个数组的对称差

1 python数据分析numpy基础之setxor1d求两个数组的对称差 python的numpy库的setxor1d(x,y)函数&#xff0c;表示数组x与y的对称差&#xff0c;即只属于其中一个集合&#xff0c;而不属于另一个集合的元素组成的数组&#xff0c;且进行去重排序。 用法 numpy.setxor1d(ar1, a…

SpringBoot整合钉钉实现消息推送

前言 钉钉作为一款企业级通讯工具&#xff0c;具有广泛的应用场景&#xff0c;包括但不限于团队协作、任务提醒、工作汇报等。 通过Spring Boot应用程序整合钉钉实现消息推送&#xff0c;我们可以实现以下功能&#xff1a; 实时向指定用户或群组发送消息通知。自定义消息内容…

基于关键词自动采集抖音视频排名及互动数据(点赞、评论、收藏)

在当今的社交媒体时代&#xff0c;抖音作为一个热门短视频平台&#xff0c;吸引了大量用户和内容创作者。对于研究和分析抖音上的热门视频及其互动数据&#xff08;如点赞、评论、收藏等&#xff09;&#xff0c;自动化的数据采集工具显得尤为重要。本项目旨在开发一个基于关键…