新网域名搭建网站,制作网站教学设计,wordpress自定义查询分页,wordpress 导入图片【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景
随着年龄的增长#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来#xff0c;技术出身的人总是很难放下一些执念#xff0c;遂将这些知识整理成文#xff0c;以纪念曾经努力学习奋斗… 【Vue3】watch 监视多种类型数据 背景简介开发环境开发步骤及源码 背景
随着年龄的增长很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来技术出身的人总是很难放下一些执念遂将这些知识整理成文以纪念曾经努力学习奋斗的日子。本文内容并非完全原创大多是参考其他文章资料整理所得感谢每位技术人的开源精神。
简介
本文介绍 Vue3 中如何使用 watch 函数监视多种类型的数据。
开发环境
分类名称版本操作系统WindowsWindows 11IDEVisual Studio Code1.91.1
开发步骤及源码
在 【Vue3】watch 监视对象类型数据中的某个属性 基础上修改 Vue 根组件 App.vue 代码。
templatediv classpersonh1监视多种类型数据/h1h2姓名{{ person.name }}/h2h2年龄{{ person.age }}/h2h2电影{{ person.film.f1 }} | {{ person.film.f2 }}/h2button clickgrowUp长大/buttonbutton clickchangeFilm修改全部电影/buttonbutton clickchangeFilm1修改第一部电影/buttonbutton clickchangeFilm2修改第二部电影/button/div
/templatescript setup langts nameApp
import { reactive, watch } from vueconst person reactive({name: Harry Potter,age: 10,film: {f1: 哈利·波特与魔法石,f2: 哈利·波特与密室,}
})function growUp() {person.age 1
}function changeFilm() {person.film {f1: 哈利·波特与阿兹卡班的囚徒,f2: 哈利·波特与火焰杯,}
}function changeFilm1() {person.film.f1 哈利·波特与凤凰社
}function changeFilm2() {person.film.f2 哈利·波特与混血王子
}watch([() person.age, () person.film], (newValue, oldValue) {console.log(Data changed from, oldValue, to, newValue)
}, {deep: true
})
/scriptstyle scoped
button {margin-right: 10px;
}
/style同时监视多种类型数据只需将被监视数据包装成一个数组将此数组作为 watch 函数的第一个参数传入。此时需要注意 watch 函数第二个参数中 newValue 和 oldValue 的值。 从日志中可以看出newValue 和 oldValue 是 Proxy 对象其中也包含一个数组对应被监视数据的变化可以如以下方式进行调用。
templatediv classpersonh1监视多种类型数据/h1h2姓名{{ person.name }}/h2h2年龄{{ person.age }}/h2h2电影{{ person.film.f1 }} | {{ person.film.f2 }}/h2button clickgrowUp长大/buttonbutton clickchangeFilm修改全部电影/buttonbutton clickchangeFilm1修改第一部电影/buttonbutton clickchangeFilm2修改第二部电影/button/div
/templatescript setup langts nameApp
import { reactive, watch } from vueconst person reactive({name: Harry Potter,age: 10,film: {f1: 哈利·波特与魔法石,f2: 哈利·波特与密室,}
})function growUp() {person.age 1
}function changeFilm() {person.film {f1: 哈利·波特与阿兹卡班的囚徒,f2: 哈利·波特与火焰杯,}
}function changeFilm1() {person.film.f1 哈利·波特与凤凰社
}function changeFilm2() {person.film.f2 哈利·波特与混血王子
}watch([() person.age, () person.film], (newValue, oldValue) {console.log(Data changed from, oldValue, to, newValue)console.log(%s 年龄从 %d 长大到 %d, person.name, oldValue[0], newValue[0])console.log(person.name, 出演电影, JSON.stringify(newValue[1]))
}, {deep: true
})
/scriptstyle scoped
button {margin-right: 10px;
}
/style