惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
博客园_首页
雷峰网
雷峰网
V
Visual Studio Blog
爱范儿
爱范儿
A
About on SuperTechFans
量子位
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
S
SegmentFault 最新的问题
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More

姓王者的博客

Linux用户Secure Boot自主维护指南 | 姓王者的博客 MAD Bugs 已经开始——关于信息安全的军备竞赛 | 姓王者的博客 解决钉钉Dingtalk无法在Linux新版内核上启动问题-修复可执行栈错误 | 姓王者的博客 突发:GitHub 正遭受大规模 Issue 赌博广告轰炸 | 姓王者的博客 Ubuntu26.04-beta体验:坚毅浣熊! | 姓王者的博客 fakeclaw装作龙虾发贴吧 | 姓王者的博客 找回12年前的QQ记忆 | 姓王者的博客 在Linux上玩Flash网页游戏-洛克王国 | 姓王者的博客 Copilot将使用交互数据来训练 | 姓王者的博客 重要通知-请更新我的GPG公钥 | 姓王者的博客 为了自由Android | 姓王者的博客 GPL"2,3"事 | 姓王者的博客 短文-对VitePlus的一点🤏小贡献 | 姓王者的博客 Bing收录没了?亲测有效的快速恢复指南 | 姓王者的博客 解决桌面设备二维码快速识别的工具-ClipQR | 姓王者的博客 解决 Nautilus 自定义终端插件安装依赖问题 | 姓王者的博客 OpenClaw 该熄火了 | 姓王者的博客 Vite8 - 统一的基建开始 | 姓王者的博客 Astro 6 推出啦 | 姓王者的博客 ubuntu的openvpn异常暂停推送更新 | 姓王者的博客 Ubuntu 24.04 安装 Win10 虚拟机 | 姓王者的博客 ESA-后记:热爱阿里云 | 姓王者的博客 Moonbit 0.8.0 重大发布,我也要改一下我的包 | 姓王者的博客 ESA Pages 边缘开发大赛获奖 | 姓王者的博客 Astro: 优化katex,mermaid和灯箱使用 | 姓王者的博客 从edgeone迁移到esa | 姓王者的博客 出租人类:AI时代的荒诞与真实 | 姓王者的博客 Astro 5.17构建性能优化实践:从18s到13s | 姓王者的博客 Moonbit License Checker 开发使用 | 姓王者的博客 Stalux Astro博客主题自荐 | 姓王者的博客
Vue:watch监视 | 姓王者的博客
作者:xingwangzhe · 2024-09-30 · via 姓王者的博客

🕒 阅读时间:1 分钟 📝 字数:309 👀 阅读量: Loading...

👁️👁️watching you!👁️👁️

#watch监视属性方法

情况一

对ref基础类型的监视

这个很容易理解

<script setup lang="ts">

import { ref,watch} from 'vue';

let num2 = ref('0'); // 用于存储二进制字符串

watch(num2,(newvalue,oldvalue)=>{

console.log(num2+'和新数据'+newvalue+'和旧数据'+oldvalue);

})

</script>

多次改变num2,打印的结果是这样的

[object Object]和新数据和旧数据0

Change.vue:19 [object Object]和新数据1111011和旧数据

Change.vue:19 [object Object]和新数据11110000101101001和旧数据1111011

Change.vue:19 [object Object]和新数据1和旧数据11110000101101001

这确实不难理解

情况二

对ref对象数据的监视

这不禁让我们思考,对ref对象的监视是对它的什么进行监视呢?它类里面的数据吗?还是说它本身? 让我们测试一下

let person = ref({

name: "李四",

age: 30,

});

watch(num2, (newvalue, oldvalue) => {

console.log(num2 + "和新数据" + newvalue + "和旧数据" + oldvalue);

});

function changeAge() {

person.value.age++;

}

function changeName() {

person.value.name += "~";

}

function changePerson() {

person.value = {

name: "王二",

age: 90,

};

}

watch(person, (newvalue, oldvalue) => {

console.log(newvalue + "和" + oldvalue);

});

实际上,只有第三个方法触发了监视,这意味着 监视ref定义的对象数据,实际监视的是它的地址值,但是如果我们想要监视它内部的值呢?这时候就需要深度监视

watch(

person,

(newvalue, oldvalue) => {

console.log(newvalue + "和" + oldvalue);

},

{ deep: true },

);

情况三

reactive定义的对象类型数据,默认是深度监视, 这里懒得示例了:)

newvalue和oldvalue打印出来是一样的,这是因为地址没有变

情况四

监视refreactive定义的对象数据类型中的属性: 若属性不是对象类型,需要写成函数形式 若属性是对象类型,可以直接编,或者写函数,但是建议写函数