Vue3(监视器watch)

Posted 月疯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue3(监视器watch)相关的知识,希望对你有一定的参考价值。

监视器(watch)是用来监视数据的变化,对数据进行监控定义监视器的俩种方式:

第一种:
            再Vue实例内部通过watch选项
            Vue.createApp({
                watch:{
                    变量:function(newValue,oldValue){},//监控方法
                    变量:{
                        handler:function(newValue,oldValue){},监控方法
                        deep:true,//开启深度监视
                        immediate:true//开启初始化触发
                    }
                }
            })
第二种:
通过Vue实例的$watch()方法
 var unwatch = vm.$watch(变量,监控方法,[options]);//返回一个取消监视函数

具体操作:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="./js/vue.js"></script>
	</head>
	<body>
		<div id="app">
			<p>{{name}}</p>
			<input type="text" v-model="name"/>
			
			<p>{{ user.password }}</p>
			<input type="text" v-model="user.password">
		</div>
		<script>
			const vm=Vue.createApp({
				data(){
					return{
						name:'htt',
						user:{
							id:1001,
							username:admin,
							password:'123'
						}
					}
				},
				//方式一:通过watch选填
				watch:{
					name:function(newValue,oldValue){
						console.log('name被修改,原值:${oldValue},新值:${newValue}')
					},
					// //当user的passord变化的时候,可以监视出来
					// user:{
					// 	handler:function(){
							
					// 	},
					// 	deep:true,//开启深度监视,当对象中的属性发生变化时也会监视
					// 	immediate:true //立即触发
					// }
					'user.password':function(newValue,oldValue){
						console.log('user.password被修改,原值:${oldValue},新值:${newValue}')
					}
				}
				
			}).mount("#app")
			
			// //方式2监视普通属性和对象,但是对对象的某个属性无法监视
			let unwatch=vm.$watch('user',function(newValue){
				console.log('user被修改',newValue)
				//取消监视
				if(newValue.password==='000000'){
					unwatch()//回调函数,取消监视
				}
			},
			{
				deep:true,
				immediate:true
			})
			
			
			// 监视器(watch)是用来监视数据的变化,对数据进行监控定义监视器的俩种方式:
			// 再Vue实例内部通过watch选项
			// Vue.createApp({
			// 	watch:{
			// 		变量:function(newValue,oldValue){},//监控方法
			// 		变量:{
			// 			handler:function(newValue,oldValue){},监控方法
			// 			deep:true,//开启深度监视
			// 			immediate:true//开启初始化触发
			// 		}
			// 	}
			// })
			
			// 通过Vue实例的$watch()方法
			// var unwatch = vm.$watch(变量,监控方法,[options]);//返回一个取消监视函数
			
		</script>
	</body>
</html>

 

以上是关于Vue3(监视器watch)的主要内容,如果未能解决你的问题,请参考以下文章

Vue2 和 Vue3 中的 watch 用法

vue3 watch监听 (immediate / deep / watchEffect)

vue3 watch监听 (immediate / deep / watchEffect)

vue3中计算属性与监视

Vue3 源码解析:watch 的实现原理

Vue3中的watchEffect