上一篇:
vue3 watch监听函数 (ref篇)https://blog.csdn.net/qq_42543244/article/details/122203802?spm=1001.2014.3001.5501上篇说到的是监听ref声明的数据,今天记录监听reactive声明的数据,其实差别并不是不大,但是其中有一些坑,特此记录,请看代码(注释也要仔细看哦)
<template> <h1>reactive数据类型</h1> <h2>姓名:{{ data.name }}</h2> <h2>年龄:{{ data.age }}</h2> <h2>爱好:{{ data.hobby }}</h2> <h2>工作薪酬:{{ data.job.j1.money }} K</h2> <button @click="data.name = '李四'">改变姓名</button> <button @click="data.age += 1">改变年龄</button> <button @click="data.hobby[0] = '踢足球'">改变爱好</button> <button @click="data.job.j1.money += 1">改变薪酬</button> </template> <script> import { reactive, watch } from "vue"; export default { name: "Demo", setup() { let data = reactive({ name: "张三", age: 18, hobby: ["打篮球", "玩游戏", "听音乐"], job: { j1: { money: 10, }, }, }); // 监听reactive数据 /* 此时是有问题的:oldVal会和newVal数据保持一致,当data里面的任意值改变,都会触发该监听,强制开启深度监听,deep配置在此时是无效的 */ watch(data, (newVal, oldVal) => { console.log(newVal, oldVal); }); // 监听reactive中的某个值 // 基础类型值 watch( () => data.name, (newVal, oldVal) => { console.log(newVal, oldVal); } ); // 数组 此时deep的配置生效(此处的oldVal也是有问题的) watch( () => data.hobby, (newVal, oldVal) => { console.log(newVal, oldVal); }, { deep: true } ); // 对象 此时deep的配置生效(此处的oldVal也是有问题的) 若要监听对象内的money: data.job.j1.money 即可 watch( () => data.job, (newVal, oldVal) => { console.log(newVal, oldVal); }, { deep: true } ); // 监听reactive中的某些值 // 都为基本数据类型 一切正常 watch([() => data.name, () => data.age], (newVal, oldVal) => { console.log(newVal, oldVal); }); //基本数据类型+数组/对象 deep有效 基本数据类型oldVal正常 引用数据类型oldVal存在问题 watch( [() => data.name, () => data.hobby], (newVal, oldVal) => { console.log(newVal, oldVal); }, { deep: true } ); //引用数据类型+引用数据类型 deep有效 引用数据类型oldVal存在问题 watch( [() => data.hobby, () => data.job], (newVal, oldVal) => { console.log(newVal, oldVal); }, { deep: true } ); return { data, }; }, }; </script>
下一篇:
vue3 watchEffect函数https://blog.csdn.net/qq_42543244/article/details/122291727
热门文章
- 「4月23日」最高速度21.2M/S,2025年SSR/Clash/V2ray/Shadowrocket每天更新免费节点订阅链接
- 梦到自己拥抱别的女人(梦见自己抱着别的女人意味着什么)
- 「4月25日」最高速度18.6M/S,2025年V2ray/SSR/Clash/Shadowrocket每天更新免费节点订阅链接
- 「4月24日」最高速度21.7M/S,2025年V2ray/SSR/Clash/Shadowrocket每天更新免费节点订阅链接
- 「4月27日」最高速度19.5M/S,2025年SSR/Shadowrocket/V2ray/Clash每天更新免费节点订阅链接
- 宠爱国际动物医疗中心地址(宠爱国际动物医院地址)
- windows 使用pyenv-win 管理多python 版本
- 狗粮颗粒机成型原理视频教学(狗粮颗粒机多少钱一台)
- 6.0 vue3 watch监听函数(reactive篇)
- Java 树形结构数据生成导出excel文件
归纳
-
15 2025-04