vue-监视属性
文本转自于:https://blog.csdn.net/weixin_46376652/article/details/125689307 作者:frontEndSmallWhite
一、两种监视方式
1、watch属性直接监视
如果刚开始确定监视对象,在vue中可以直接使用watch属性实现监视
watch:{
//正常写法
Info:{
immediate:true,
handler(newValue,oldValue){
console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
}
}
//简写形式
// Info(newValue,oldValue){
// console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
// }
}
handler函数
监视属性中的函数,能够通过获取newValue和oldValue的值,进行监视到属性改变后的一些操作;
接收两个参数:
newValue:表示新的值
oldValue:表示改变前的值
immediate属性:实现初始化的时候调用一次监视函数handler,默认为false
2、vm.$watch
如果刚开始不确定监视的对象,就可以后续再使用这个实现监视
//另一种写法,在vm外使用$调用
vm.$watch("Info",{
handler(newValue,oldValue){
console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
}
})
二、深度监视
watch默认监视单层属性的改变,想实现监测多层结构需要使用deep属性
监视多级结构中某个属性的变化
watch:{ "numbers.a":{ ... } } //numbers是data上的一个key,里面包含a
注意:本来所监视的属性都是字符串,需要带双引号,只不过单层的省略了双引号
deep属性
用于开启深度监视,多级结构中任何一个属性值发生变化,都能够检测到(内部的改变也能够通过外部监测到),监视多级结构中所有属性的变化
watch:{
'numbers.a':{
handler(){
console.log("numbers中的a改变了")
}
},
numbers:{
// 开启深度监视
deep:true,
handler(){
console.log("numbers改变")
}
}
}
三、监视属性的简写形式
与计算属性类似,当不需要使用其他属性,只使用handler属性时,可以使用简写形式
//简写形式
Info(newValue,oldValue){
console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
}
演示代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>键盘事件</title>
<!--引入Vue-->
<style></style>
</head>
<body>
<!--准备好一个容器-->
<div id="root">
<h2>今天天气{{ info }}</h2>
<button @click="change">切换天气</button>
</div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script type="text/javascript">
Vue.config.productionTip = false; //阻止Vue在启动时生成生产提示
let vm = new Vue({
el: "#root",
data: {
isHot: true,
},
computed: {
info() {
return this.isHot ? "炎热" : "凉爽";
},
},
methods: {
change() {
this.isHot = !this.isHot;
},
},
watch: {
info: {
immediate: true,
handler(newValue, oldValue) {
console.log(newValue, oldValue);
},
},
},
});
</script>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix