Vue-watch监听功能(侦听器)

Vue内watch侦听器详解

watch是Vue内部提供的一个用于侦听功能的更通用的方法,其用来响应数据的变化,通过特定的数据变化驱动一些操作。Vue官方文档解释当需要在数据变化时执行异步或开销较大的操作时,推荐使用该方法。

<template>
	<div></div>
</template>
<script>
	export default {
		data(){
			variable:null,  //需要监听的变量
		},
		watch:{
			// watch内监听variable变量,当其值有变化时执行
			variable(newVal,oldVal){
				// newVal为新值,oldVal为旧值
			}
		}
	}
</script>

也可以这样写

		watch:{
			// watch内监听variable变量,当其值有变化时执行
			variable:{
				handler(newVal,oldVal){
					// newVal为新值,oldVal为旧值
				}
			}
		}

immediate用法

上面是watch侦听器的普通用法,就是当未设置immediate或者immediate的值为false时,被侦听的变量在页面初次加载时第一次绑定值得时候,并不会执行监听操作;但是当设置了immediate的值为true时,则会立即执行一次监听操作。

		watch:{
			// watch内监听variable变量,当其值有变化时执行
			variable:{
				handler(newVal,oldVal){
					// newVal为新值,oldVal为旧值
				}immediate:true   //在页面初次加载时,就会执行一次监听操作,调用这个函数
			}
		}

deep深度监听

侦听普通变量的变化是使用以上方法,当侦听的某个变量值是对象时则不起作用,这时需要使用deep深度监听。对象内有多个属性时,对象内的每个属性都会被侦听,每个属性的变化都会执行一次侦听操作。

<template>
	<div></div>
</template>
<script>
	export default {
		data(){
			person:{
				name:'',
				age:'',
				sex:''
			},
		},
		watch:{
			// 此处监听person对象变量
			person:{
				handler(newVal,oldVal){
					// newVal为新值,oldVal为旧值
				},
				deep:true //深度监听,当监听对象中的某个属性发生变化时,都会进行监听操作,调用这个函数
			}
		}
	}
</script>

所以,完整版可以这样写。既能实现首次加载时监听又能实现深度监听。

<template>
	<div></div>
</template>
<script>
	export default {
		data(){
			person:{
				name:'',
				age:'',
				sex:''
			},
		},
		watch:{
			// 此处监听person对象变量
			person:{
				handler(newVal,oldVal){
					// newVal为新值,oldVal为旧值
				},
				immediate:true,   //在页面初次加载时,就会执行一次监听操作,调用这个函数
				deep:true,  //深度监听,当监听对象中的某个属性发生变化时,都会进行监听操作,调用这个函数
			}
		}
	}
</script>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值