返回顶部
首页 > 资讯 > 精选 >Vue3中的watchEffect怎么用
  • 552
分享到

Vue3中的watchEffect怎么用

2023-06-30 12:06:25 552人浏览 安东尼
摘要

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

本篇内容主要讲解“vue3中的watchEffect怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习Vue3中的watchEffect怎么用”吧!

前言

watchEffect,它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。

换句话说:watchEffect相当于将watch 的依赖源和回调函数合并,当任何你有用到的响应式依赖更新时,该回调函数便会重新执行。不同于 watchwatchEffect 的回调函数会被立即执行(即 { immediate: true }

watchEffect的副作用

什么是副作用(side effect),简单的说副作用就是执行某种操作,如对外部可变数据或变量的修改,外部接口的调用等。watchEffect的回调函数就是一个副作用函数,因为我们使用watchEffect就是侦听到依赖的变化后执行某些操作。

当执行副作用函数时,它势必会对系统带来一些影响,如在副作用函数里执行了一个定时器setInterval,因此我们必须处理副作用。 Vue3watchEffect侦听副作用传入的函数可以接收一个 onInvalidate 函数作为入参,用来注册清理失效时的回调。当以下情况发生时,这个失效回调会被触发:

  • 副作用即将重新执行时(即依赖的值改变)

  • 侦听器被停止 (通过显示调用返回值停止侦听,或组件被卸载时隐式调用了停止侦听)

import { watchEffect, ref } from 'vue'const count = ref(0)watchEffect((onInvalidate) => {  console.log(count.value)  onInvalidate(() => {    console.log('执行了onInvalidate')  })})setTimeout(()=> {  count.value++}, 1000)

上述代码打印的顺序为: 0 -> 执行了onInvalidate,最后执行 -> 1

分析:初始化时先打印count的值0, 然后由于定时器把count的值更新为1, 此时副作用即将重新执行,因此onInvalidate的回调函数会被触发,打印执行了onInvalidate,然后执行了副作用函数,打印count的值1

import { watchEffect, ref } from 'vue'const count = ref(0)const stop = watchEffect((onInvalidate) => {  console.log(count.value)  onInvalidate(() => {    console.log('执行了onInvalidate')  })})setTimeout(()=> {  stop()}, 1000)

上述代码:当我们显示执行stop函数停止侦听,此时也会触发onInvalidate的回调函数。同样,watchEffect所在的组件被卸载时会隐式调用stop函数停止侦听,故也能触发onInvalidate的回调函数。

watchEffect的应用

利用watchEffect的非惰性执行,以及传入的onInvalidate 函数,我们可以做什么事情了?

场景一:平时我们定义一个定时器,或者监听某个事件,我们需要在mounted生命周期钩子函数内定义或者注册,然后组件销毁之前在beforeUnmount钩子函数里清除定时器或取消监听。这样做我们的逻辑被分散在两个生命周期,不利于维护和阅读。

如果我利用watchEffect,创造和销毁逻辑放在了一起,此时代码更加优雅易读~

// 定时器注册和销毁watchEffect((onInvalidate) => {  const timer = setInterval(()=> {    // ...  }, 1000)  onInvalidate(() => clearInterval(timer))})const handleClick = () => { // ...}// dom的监听和取消监听onMounted(()=>{  watchEffect((onInvalidate) => {    document.querySelector('.btn').addEventListener('click', handleClick, false)    onInvalidate(() => document.querySelector('.btn').removeEventListener('click', handleClick))  })})

场景二:利用watchEffect作一个防抖节流(如取消请求)

const id = ref(13)watchEffect(onInvalidate => {   // 异步请求  const token = perfORMAsyncOperation(id.value)  // 如果id频繁改变,会触发失效函数,取消之前的接口请求  onInvalidate(() => {    // id has changed or watcher is stopped.    // invalidate previously pending async operation    token.cancel()  })})

到此,相信大家对“Vue3中的watchEffect怎么用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Vue3中的watchEffect怎么用

本文链接: https://lsjlt.com/news/328578.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Vue3中的watchEffect怎么用
    本篇内容主要讲解“Vue3中的watchEffect怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue3中的watchEffect怎么用”吧!前言watchEffect,它立即执行传入的...
    99+
    2023-06-30
  • Vue3中的watchEffect怎么应用
    本文小编为大家详细介绍“Vue3中的watchEffect怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue3中的watchEffect怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。watch...
    99+
    2023-06-30
  • vue3中的watch和watchEffect怎么用
    本篇内容介绍了“vue3中的watch和watchEffect怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先总结一下两者的区别:w...
    99+
    2023-06-30
  • Vue3中的computed,watch,watchEffect怎么使用
    这篇“Vue3中的computed,watch,watchEffect怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“...
    99+
    2023-07-06
  • vue3中watch和watchEffect怎么使用
    这篇文章主要讲解了“vue3中watch和watchEffect怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue3中watch和watchEffect怎么使用”吧!一、watch...
    99+
    2023-06-21
  • Vue3中watchEffect的用途浅析
    前言 vue2里面的 watch api 大家应该都挺熟悉的了, vue2中vue实例里面有一个 $watch 方法 在sfc(sigle file component)里面有一个 ...
    99+
    2024-04-02
  • vue3中watch和watchEffect的新用法
    目录一、watch新用法1.1、watch使用语法1.2、watch监听多个属性值1.3、watch监听引用数据类型二、watchEffect三、watch与watchEffect区...
    99+
    2024-04-02
  • Vue3中的watchEffect特性是什么
    watchEffect 是 Vue3 中提供的一个新特性,用于监听响应式数据的变化,并在数据发生变化时执行指定的回调函数。与 Vue2 中的 watch 不同,watchEffect 不需要指定要监听的数据,而是会自动追踪函数中使用的响应式...
    99+
    2023-05-20
    Vue3 watcheffect
  • vue3中watch和watchEffect是什么
    小编给大家分享一下vue3中watch和watchEffect是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!watch结论1:watch需要侦听特定的数据源...
    99+
    2023-06-29
  • VUE3中watch和watchEffect的用法详解
    watch和watchEffect都是监听器,但在写法和使用上有所区别。 watch在监听 ref 类型时和监听reactive类型时watch函数的写发有所不一样。watch在监听...
    99+
    2024-04-02
  • 浅谈Vue3中watchEffect的具体用法
    前言 watchEffect,它立即执行传入的一个函数,同时响应式追踪其依赖,并在其依赖变更时重新运行该函数。 换句话说:watchEffect相当于将watch 的依赖源...
    99+
    2024-04-02
  • Vue3中的computed,watch,watchEffect如何使用
    一、computed<template> 姓:<input v-model="person.firstName"><br/><br/> 名:<input v...
    99+
    2023-05-14
    Vue3 watch computed
  • vue3中的watch和watchEffect如何使用
    这篇文章主要介绍了vue3中的watch和watchEffect如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue3中的watch和watchEffect如何使用文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-06
  • 详解Vue3 中的watchEffect 特性
    watchEffect 是 Vue3 中提供的一个新特性,用于监听响应式数据的变化,并在数据发生变化时执行指定的回调函数。 与 Vue2 中的 watch 不同,watchEffec...
    99+
    2023-05-18
    Vue3 watchEffect Vue3 watchEffect特征
  • vue3中watch与watchEffect的区别
    目录vue3中watch与watchEffect的区别watch refwatch reactivewatchEffect对比扩展:vue3中的 watchEffect 和 watc...
    99+
    2023-02-17
    vue3 watch与watchEffect的区别 vue3 watch与watchEffect用法 vue3 watch与watchEffect
  • Vue3中的 computed,watch,watchEffect的使用方法
    目录一、computed二、watchvu2 的写法Vue3 中这样写三、watchEffect一、computed <template> 姓:<input ...
    99+
    2024-04-02
  • vue3怎么使用watch/watchEffect监听数据
    这篇文章主要介绍“vue3怎么使用watch/watchEffect监听数据”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue3怎么使用watch/watchEffect监听数据”文章能帮助大家解...
    99+
    2023-07-06
  • vue3怎么数据监听watch/watchEffect
    目录watch()函数watchEffect()函数watch 与 watchEffect之间的联系与区别我们都知道监听器的作用是在每次响应式状态发生变化时触发,在组合式 API 中...
    99+
    2023-02-23
    vue3数据监听watch/watchEffect vue3数据监听 vue3 watch vue3 watchEffect
  • Vue3中watchEffect侦听器如何使用
    本篇内容介绍了“Vue3中watchEffect侦听器如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!watchEffect 侦听器其...
    99+
    2023-07-02
  • vue3中的watch和watchEffect实例详解
    目录首先总结一下两者的区别:下面是根据上面的第三点做的一些小实验:总结闲来无事,比较了一下 vue3 中的 watch 和 watchEffect,总觉得官方文档没咋说清楚,今天就小...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作