我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue3中watchEffect的用途浅析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue3中watchEffect的用途浅析

前言

vue2里面的 watch api 大家应该都挺熟悉的了, vue2中vue实例里面有一个 $watch 方法 在sfc(sigle file component)里面有一个 watch 选项。他可以实现在一个属性变更的时候,去执行我们想要的行为。比如:

  • 当ID改变的时候,从数据库里面获取新的数据。
  • 当属性变换的时候执行一个动画。
  • 当搜索条件变更的时候,更新查询到的数据。

但是 vue3 除了 watch api, 还新增了一个 watchEffect 的 api, 我们来看看他的用法。

我们收集了一个 userID 的依赖,然后在 userID 改变的时候,就会执行watchEffect 的回调。


// 例子灵感来源于[文档](https://v3.vuejs.org/api/computed-watch-api.html#watcheffect)

import { watchEffect, ref } from 'vue'
setup () {
    const userID = ref(0)
    watchEffect(() => console.log(userID))
    setTimeout(() => {
      userID.value = 1
    }, 1000)

    

    return {
      userID
    }
 }

与 watch 有什么不同?

  • 第一点我们可以从示例代码中看到 watchEffect 不需要指定监听的属性,他会自动的收集依赖, 只要我们回调中引用到了 响应式的属性, 那么当这些属性变更的时候,这个回调都会执行,而 watch 只能监听指定的属性而做出变更(v3开始可以同时指定多个)。
  • 第二点就是 watch 可以获取到新值与旧值(更新前的值),而 watchEffect 是拿不到的。
  • 第三点是 watchEffect 如果存在的话,在组件初始化的时候就会执行一次用以收集依赖(与computed同理),而后收集到的依赖发生变化,这个回调才会再次执行,而 watch 不需要,因为他一开始就指定了依赖。

从他们的不同点可以看出,他们的优缺点。并且可以在业务需求面前做出正确的选择。

watchEffect 进阶

停止监听

watchEffect 会返回一个用于停止这个监听的函数,如法如下:


const stop = watchEffect(() => {
  
})

// later
stop()

例子来源于官方文档, 上面有链接。

如果 watchEffect 是在 setup 或者 生命周期里面注册的话,在组件取消挂载的时候会自动的停止掉。

使 side effect 无效

什么是 side effect ,不可预知的接口请求就是一个 side effect,假设我们现在用一个用户ID去查询用户的详情信息,然后我们监听了这个用户ID, 当用户ID 改变的时候我们就会去发起一次请求,这很简单,用watch 就可以做到。 但是如果在请求数据的过程中,我们的用户ID发生了多次变化,那么我们就会发起多次请求,而最后一次返回的数据将会覆盖掉我们之前返回的所有用户详情。这不仅会导致资源浪费,还无法保证 watch 回调执行的顺序。而使用 watchEffect 我们就可以做到。

onInvalidate()

onInvalidate(fn)传入的回调会在 watchEffect 重新运行或者 watchEffect 停止的时候执行


watchEffect(() => {
      // 异步api调用,返回一个操作对象
      const apiCall = someAsyncMethod(props.userID)

      onInvalidate(() => {
        // 取消异步api的调用。
        apiCall.cancel()
      })
})

借助 onInvalidate 我们就可以对上面所述的情况作出比较优雅的优化。

总结

到此这篇关于Vue3中watchEffect用途的文章就介绍到这了,更多相关Vue3 watchEffect用途内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue3中watchEffect的用途浅析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue3中的watchEffect怎么用

本篇内容主要讲解“Vue3中的watchEffect怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中的watchEffect怎么用”吧!前言watchEffect,它立即执行传入的
2023-06-30

Vue3中的watchEffect怎么应用

本文小编为大家详细介绍“Vue3中的watchEffect怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3中的watchEffect怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。watch
2023-06-30

vue3中watch和watchEffect使用实例分析

watchwatch监听单个数据import{ref,watch}from'vue'consttext1=ref('')watch(text1,(newVal,oldVal)=>{console.log('监听单个数据',newVal,oldVal)})watch监听多个数据import{ref,watch}from'vue'consttext1=ref(&
2023-05-14

vue3中的watch和watchEffect怎么用

本篇内容介绍了“vue3中的watch和watchEffect怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先总结一下两者的区别:1
2023-06-30

详解Vue3 中的watchEffect 特性

这篇文章主要介绍了Vue3 中的 watchEffect 特性详解,watchEffect 是 Vue3 中非常有用的一个特性,它可以让我们轻松地监听响应式数据的变化,并在数据发生变化时执行指定的回调函数,从而简化代码并提高应用的性能,需要的朋友可以参考下
2023-05-18

vue3中的watch和watchEffect如何使用

这篇文章主要介绍了vue3中的watch和watchEffect如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3中的watch和watchEffect如何使用文章都会有所收获,下面我们一起来看看吧
2023-07-06

Vue3中的computed,watch,watchEffect如何使用

一、computed姓:名:全名:{{person.fullname}}全名:import{reactive,computed}from'vue'exportdefault{name:'HelloWorld',setup(){letperson=reactive({firstName:"张",lastName:"三"})//computed简写形式,没考虑修改/*person.fullname
2023-05-14

Vue3中的computed,watch,watchEffect怎么使用

这篇“Vue3中的computed,watch,watchEffect怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“
2023-07-06

vue3中watch与watchEffect的区别

vue3新增的CompositionAPI中的watchEffect和watch都可在setup()函数中使用,本文重点介绍vue3中watch与watchEffect的区别,感兴趣的朋友一起看看吧
2023-02-17

vue3中watch和watchEffect怎么使用

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

Vue3中watchEffect侦听器如何使用

本篇内容介绍了“Vue3中watchEffect侦听器如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!watchEffect 侦听器其
2023-07-02

Vue3中的watchEffect特性是什么

watchEffect是Vue3中提供的一个新特性,用于监听响应式数据的变化,并在数据发生变化时执行指定的回调函数。与Vue2中的watch不同,watchEffect不需要指定要监听的数据,而是会自动追踪函数中使用的响应式数据,并在这些数据发生变化时重新执行回调函数。这种自动追踪的特性可以简化代码,并提高应用的性能。下面是一个使用watchEffect的示例:import{watchEffect,reactive}from'vue'conststate=reac
2023-05-20

编程热搜

目录