vue2 - 监听属性
监视属性watch:
1.当被监视的属性变化时, 回调函数自动调用, 进行相关操作
2.监视的属性必须存在,才能进行监视!!
3.监视的两种写法:
(1).new Vue时传入watch配置
(2).通过vm.$watch监视
<script> const vm = new Vue({ el: '#root', data: { isHot: true, }, //第一种写法 watch: { isHot: { immediate: true, //初始化时让handler调用一下 //handler什么时候调用?当isHot发生改变时。 handler(newValue, oldValue) { console.log('isHot被修改了', newValue, oldValue) } } } }) //第二种写法 vm.$watch('isHot', { immediate: true, //初始化时让handler调用一下 //handler什么时候调用?当isHot发生改变时。 handler(newValue, oldValue) { console.log('isHot被修改了', newValue, oldValue) } }) </script>
深度监听:
<script> const vm = new Vue({ el: '#root', data: { isHot: true, numbers: { a: 1, b: 1, c: { d: { e: 100 } } } }, watch: { //1.监视多级结构中某个属性的变化 'numbers.a': { handler() { console.log('a被改变了') } }, //2.监视多级结构中所有属性的变化 numbers: { deep: true, handler() { console.log('numbers改变了') } } } }) </script>
简写:
简写不能写初始化调用与深度监听
watch:{ //简写 isHot(newValue,oldValue){ console.log('isHot被修改了',newValue,oldValue,this) } }
vm.$watch('isHot',(newValue,oldValue)=>{ console.log('isHot被修改了',newValue,oldValue,this) })
两个重要的小原则:
1.所被Vue管理的函数,最好写成普通函数,这样this的指向才是vm 或 组件实例对象。
2.所有不被Vue所管理的函数(定时器的回调函数、ajax的回调函数等、Promise的回调函数),最好写成箭头函数,
这样this的指向才是vm 或 组件实例对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构