watch和watchEffect监听

watch:

第一个参数可以是不同形式的“数据源”:它可以是一个 ref (包括计算属性)、一个响应式对象、一个 getter 函数、或多个数据源组成的数组,在每次响应式状态发生变化时触发回调函数

我们可以在v-model定义一个响应式变量,然后通过watch来监听这个变量

代码示例:


<view class="box">
		<input type="text" placeholder="请输入内容" v-model="iptMod">
	</view>
	输入的值:{{iptMod}}
import { ref, watch } from 'vue';

const iptMod=ref("");//响应式变量
//监听iptMod
watch(iptMod,(newValue,oldValue)=>{
	console.log(newValue);//新值
	console.log(oldValue);//老值
})

 当然我们也可以通过watch来监听对象或者对象的某一个值,watch默认是一个浅层监听如果想要开启深层监听有两种方式第一个就是 getter 函数,watch的第一个参数就不能是响应式函数了,我们可以使用()=>箭头函数的方式来监听

代码示例:

<template>
	<view class="box">
		<input type="text" placeholder="请输入内容" v-model="iptMod.name">
	</view>
	{{iptMod}}
</template>
<script setup>
import { ref, watch } from 'vue';

const iptMod=ref(
	{id:1,name:"张三",price:4399});//响应式变量
//监听iptMod
watch(()=>iptMod.value.name,(newValue,oldValue)=>{
	console.log(newValue);//新值
	console.log(oldValue);//老值
})

</script>

还可以通过watch的第三个参数来开启深层监听,deep:true,当我们输入内容时我们可以拿到这个对象

代码示例:

<template>
	<view class="box">
		<input type="text" placeholder="请输入内容" v-model="iptMod.name">
	</view>
	{{iptMod}}
</template>
<script setup>
import { ref, watch } from 'vue';

const iptMod=ref({id:1,name:"张三",price:4399});//响应式变量
//监听iptMod
// watch(()=>iptMod.value.name,(newValue,oldValue)=>{
// 	console.log(newValue);//新值
// 	console.log(oldValue);//老值
// })
watch(iptMod,(newValue)=>{
	console.log(newValue);
},{deep:true});//deep:true 开启深层监听

</script>

 但是这个监听函数是我们改变输入框时才会拿到,如果想要立即拿到这个对象的话我们可以在第三个参数上加上一个immediate:truel

代码示例:

watch(iptMod,(newValue)=>{
	console.log(newValue);
},{deep:true,immediate:true});//deep:true 开启深层监听 immediate立即监听拿到

 扩展:监听两个时可以使用数组来监听,

比如:

watch(([iptMod1,iptMod2]),([new1,old1],[new2,old2])=>{
	console.log(new1,old1);
	console.log(new2,old2);
})

 watchEffect()自动监听只要上面的输入框发生变化就能监听到

watchEffect(()=>{
	console.log(iptMod1,iptMod2);
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值