watch倾听器

1.watch基础用法

1.1 新旧值案例

此时我们添加一个文本框,使用v-model将数据返回出来

再在script 中使用watch方法

第一个参数person 是变量,newValue 是新值,oldValue 是旧值

那么什么是新值?什么是旧值?

下面这张图可以详细的看出来

通过上图可以看出

其实旧值也就是在输入新的文字之前的值

新值也就是输入后的所有值

那我们删除一个数字时,会发生什么结果呢?

跟上面相似,旧值是删除前的值,而新值就是删除后的值

1.2新值案例升级1

现在我们对代码修改一下,要求只看新值,并且讲person 改成一个对象

此时控制台会是什么样的呢?

可以看到,即使添加了《1234》,在控制台中却什么也没有

这是因为我们必须要对他生成一个getter 函数

所以我们再对代码升级一下

在加上这个方法后,并且将person对象变成了person的value中的name值

此时的结果会是

现在就可以发现,在输入了《1234》后,相对应的控制台也输出了新值

所以说是一个对象时,我们就应该为他添加getter方法

1.3 新值案例升级2

在案例1中,只能对他的name变化输出,那么如果我修改了age,他就不会输出了,所以我们再次对他升级

此时仍然是监听person对象,但是在下面加上了一个“ {deep:true} ”,也就是深度监听

无论是name发生改变,还是age 发生改变,都可以监听到

此时的结果相比案例1,还多出了一个age 属性,因为咱们现在监听的是一个对象,所以会将对象的所有东西都返回出来

1.4 立即监听

在上面的案例中,都监听出了改变后的新值,那么还未改变时的值,能不能直接监听并输出呢?

加上一个小小的属性:immediate

尽管没有对它进行改变,但是初始值还是会显示出来,这就是立即监听

2. watch 分开监听

此时我们优化了代码,让页面有两个文本框,可以对名和姓都进行监听并输出

并且新值和旧值都是分开的

在页面中无论进行任何操作,都会返回出第一个文本框和第二个文本框的值

并且返回的都是新值

那么想返回旧值的话其实是相同的操作

仅需要在控制台输出 后面的即可

那么可以看出现在已经是老值了

3.watchEffect用法

3.1 watchEffect的基本案例

此时我们添加watchEffect 方法但是不和watch 方法一样,我们在这里什么参数也不写

而是直接输出姓名的value

这里就可以看出,即使没有写参数,但是仍然将数据都返回出来了

也就是说既可以立即监听,又可以像以前那样拿到所有的数据,所以他的性能较高

在某些方面也比watch要强

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值