vue之watch监听属性
1、组件实例属性watch对应一个对象;键是需要观察的表达式,值是对应回调函数;值也可以是方法名,或者包含选项的对象;组件实例将会在实例化时调用 $watch().
<template> <input type="checkbox" v-model="item.checked" @change="handleChange" /> </template> <script> export default { model: { prop: "item", // 自定义属性名 event: "change" // 自定义事件名 }, props: { item: { type: Object, default: () => ({ checked: false }) } }, watch: { "item.checked"(val, oldVal) { // 这里可以在值变化时做些什么 } }, methods: { handleChange(data) { this.$emit("change", data); } } }; </script>
2、立即触发:通过上面的代码,已经可以在值发生变化的时候触发监听,但是如果想在组件初始化时就像触发监听,我们还需要在created或者mounted生命周期钩子里面做事情。不过,现在可以不用这样写了,通过配置watch的立即触发属性,就可以满足需求了。
watch: { // 在值发生变化之后,重新加载数据 "item.checked": { // 通过handler来监听属性变化, 初次调用 newValue为""空字符串, oldValue为 undefined handler(newValue, oldValue) { if (newValue !== oldValue) { // 这里可以在值变化时做些什么 } }, // 配置立即执行属性 immediate: true } },
3、深度监听:监听对象的每一个值得变化
watch: { // 在值发生变化之后,重新加载数据 item: { // 通过handler来监听属性变化, 初次调用 newValue为""空字符串, oldValue为 undefined handler(newValue, oldValue) { if (newValue !== oldValue) { // 这里可以在值变化时做些什么 } }, // 配置立即执行属性 immediate: true, // 通过指定deep属性为true, watch会监听对象里面每一个值的变化 deep: true } },
4、随时监听,随时取消,了解一下$watch
// 随时监听,随时取消,了解一下$watch const unwatch = this.$watch( 'item', () => { console.log('数据发生了变化') }, { deep: true } ); // 取消简单 unwatch()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!