Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

How to use watch and watchEffect in vue3

2025-01-16 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/02 Report--

这篇文章主要讲解了"vue3中watch和watchEffect怎么使用",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"vue3中watch和watchEffect怎么使用"吧!

一、watch 新用法

选项式API中,watch 使用

watch:{ mood(curVal,preVal){ console.log('cur',curVal);//最新值 console.log('pre',preVal);//修改之前的值 }}1.1、watch 使用语法

在 Composition API 中,使用 watch 时,必须先引入。

使用语法为:

import { watch } from "vue"watch( name , ( curVal , preVal )=>{ //业务处理 }, options)

共有三个参数,分别为:

name :需要帧听的属性

(curVal,preVal)=>{ //业务处理 } 箭头函数,是监听到的最新值和本次修改之前的值,此处进行逻辑处理。

options :配置项,对监听器的配置,如:是否深度监听。

页面刚进入的时候并不会执行,值发生改变的时候,才会打印出当前最新值和修改之前的值。

示例1:监听一个数据

import { ref , watch } from "vue"export default{ setup(){ const mood = ref("") //帧听器 watch(mood,(curVal,preVal)=>{ console.log('cur',curVal); console.log('pre',preVal); },{ //配置项 }) return{ mood } }}

watch 也可以监听多个属性值,此时传入的数据变成数组形式,配置项保持不变。

1.2、watch 监听多个属性值

示例2:监听多个属性

watch([mood,target],([curMood,curTarget],[preMood,preTarget])=>{ console.log('curMood',curMood); console.log('preMood',preMood); console.log('curTarget',curTarget); console.log('preTarget',preTarget);},{ //配置项})1.3、watch 监听引用数据类型

watch 监听引用数据类型时,如果只监听其中某个属性时,

使用语法如下:

watch(()=>obj.name,(curValue,preValue)=>{ //帧听引用数据类型的某个属性},{ //配置项})

第一个参数,回调函数返回的是需要帧听对象的属性。后边的参数与上边的一致。

示例3:帧听对象某个属性

{{obj}} import { ref , reactive , watch } from "vue"export default{ setup(){ const obj = reactive({ name:'qq',sex:'女' }) watch(()=>obj.name,(cur,pre)=>{ console.log('cur',cur); },{ }) return{ obj } }}

如果我们试着把属性去掉,直接监听整个对象,发现watch好像失效了。此时我们就需要引入 watchEffect。

二、watchEffect

watchEffect 也是一个帧听器,是一个副作用函数。它会监听引用数据类型的所有属性,不需要具体到某个属性,一旦运行就会立即监听,组件卸载的时候会停止监听。

示例4:监听对象

{{obj}} import { reactive , watchEffect } from "vue"export default{ setup(){ let obj = reactive({ name:'qq',sex:'女'}) watchEffect(() => { console.log('name',obj.name); console.log('sex' , obj.sex); }) return{ obj } }}

watchEffect 参数只有一个回调函数。此时刷新页面进入,watchEffect 就会打印结果。

三、watch 与 watchEffect 区别和联系

watch 与 watchEffect 都是监听器,那么它们之间有什么关系呢?

3.1、watch特点

watch 监听函数可以添加配置项,也可以配置为空,配置项为空的情况下,

watch的特点为:

有惰性:运行的时候,不会立即执行。

更加具体:需要添加监听的属性。

可以访问属性之前的值:回调函数内会返回最新值和修改之前的值。

可配置:可以添加配置项。

3.2、watch 配置项

watch 的配置项可以补充watch特点上的不足,可以配置的有:

immediate:配置watch属性是否立即执行,值为 true 时,一旦运行就会立即执行,值为false时,保持惰性。

deep:配置 watch 是否深度监听,值为 true 时,可以监听对象所有属性,值为 false 时保持更加具体特性,必须指定到具体的属性上。

3.3、watchEffect 特点

watchEffect 副作用函数它的特点分别为:

非惰性:一旦运行就会立即执行。

更加抽象:使用时不需要具体指定监听的谁,回调函数内直接使用就可以。相比watch比较难理解。

不可访问之前的值:只能访问当前最新的值,访问不到修改之前的值。

3.4、watch 与 watchEffect 联系

watch 的前两个特点与 watchEffect 的两个特点刚好相反,watch 通过配置项可以修改成带有 watchEffect 特点。

示例5:watch 监听对象

{{obj}} import { ref , reactive , watch } from "vue"export default{ setup(){ const obj = reactive({ name:'qq',sex:'女' }) watch(()=>obj,(cur,pre)=>{ console.log('cur',cur); },{ immediate:true, deep:true }) return{ obj } }}感谢各位的阅读,以上就是"vue3中watch和watchEffect怎么使用"的内容了,经过本文的学习后,相信大家对vue3中watch和watchEffect怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report