vue3学习之watch
仅记录笔记
复制<template>
<div>
<h2>当前求和为:{{num}}</h2>
<button @click="sum++">点我加1</button>
<br />
<h2>watch监听多个ref声明:{{msg}}</h2>
<button @click="msg+'!'">点我加1</button>
<br />
<h2>姓名:{{person.name}}</h2>
<h2>年龄:{{person.age}}</h2>
<h2>薪水:{{person.job.j1}} k</h2>
<button @click="person.name+'!'">修改姓名</button>
<button @click="person.age++">年龄加1</button>
<button @click="person.job.j1++">加钱</button>
</div>
</template>
<script>
import { ref, reactive, watch } from "vue";
export default {
setup() {
// 声明
let num = ref(0);
let msg = "watch";
let person = {
name: "张三",
age: 18,
job: {
j1: {
money: 10
}
}
};
// 使用watch
// watch 可以接收三个参数 第一个是要监听的对象 第二个是数据处理变化,第三个是配置项 immediate:true是刚一进去就监听一次
// 情况一:监视ref所定义的一个响应式数据
watch(
sum,
(newValue, oldValue) => {
console.log(newValue, oldValue);
},
{ immediate: true }
);
// 情况二:监视多个ref所声明的响应式数据
// 多个的话是第一个参数是 用数组传递 也可以调用多次watch(因为在vue3里面watch是一个函数)
watch(
[num, msg],
(newValue, oldValue) => {
console.log(newValue, oldValue);
},
{ immediate: true }
);
// 情况三:监视reactive所定义的一个响应式数据的全部属性
/*
1.注意:使用reactive定义的数据 无法正确获取oldValue
2.注意:强制开启了深度检测(deep配置无效)
*/
watch(
person,
(newValue, oldValue) => {
console.log("person变化了", newValue, oldValue);
},
{ deep: true } //此处配置的deep无效
);
// 情况四:监视reactive所定义的一个响应式数据的一个属性
watch(
() => person.age,
(newValue, oldValue) => {
console.log("person.age变化了", newValue, oldValue);
}
);
// 情况五:监视reactive所定义的一个响应式数据的一些属性
// 使用数组 把情况四要监视的属性放到数组内
watch([() => person.age, () => person.name], (newValue, oldValue) => {
console.log("person.age变化了", newValue, oldValue);
});
//特殊情况
//当监视的声明的对象内的属性 还是一个对象,因为不是用reactive直接声明的
watch(
() => person.job,
(newValue, oldValue) => {
console.log("person.job变化了", newValue, oldValue);
},
{ deep: true }//此处由于监视的是reactive定义的对象内的某个属性,所以deep配置有效
);
return {
num,
msg,
person
};
}
};
</script>
作者:小靓仔
出处:https://www.cnblogs.com/loveliang/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
出处:https://www.cnblogs.com/loveliang/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!