[vue3] watch和watchEffect简记

这篇具有很好参考价值的文章主要介绍了[vue3] watch和watchEffect简记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

watch的数据源

watch函数的第一个参数是监听的数据源,可以是:

  • ref和computed创建的响应式数据;
  • reactive创建的响应式对象;
  • getter函数;
  • 多个数据源组成的数组;

  • 响应式对象的属性需要使用getter监听。
  • 当数据源是响应式对象时,其属性的变更会触发回调函数,但是接收到的newValueoldValue是一样的,因为对象的引用是同一个。
  • 和上一条不同,如果数据源是一个“返回响应式对象”的getter,除非对象的引用变更,否则不会触发回调函数。可以使用deep监听其所有的属性,使用递归实现,开销大,谨慎使用。
  • 一般watch是先设置,监听到变化后再触发。如果需要设置的时候就先立即触发一次,使用immediate

watchEffect

特点

  • watchEffect不需要指定依赖,只需要传入回调函数,它会自动追踪函数内部依赖的响应式数据,并在这些数据发生变更时触发回调函数。
  • 对于有多个依赖项的监听器来说,不需要手动维护依赖列表,比watch方便很多。
  • watchEffect默认是immediate的,即立即运行一个函数,同时响应式地追踪其依赖,并在依赖更改时重新执行。
  • watchEffect只在同步执行期间追踪依赖,对于使用async await的异步回调函数,只有在第一个await之前访问的响应式数据会被追踪。

侦听器回调的触发时机

响应式状态的变更会同时触发:Vue组件更新侦听器回调

默认情况下,先执行侦听器回调,再执行Vue组件更新。这意味着在侦听器回调中的DOM是Vue更新组件之前的状态。

可以使用flush: post选项,调整这一顺序:

watch(source, callback, {
  flush: 'post'
})

watchEffect(callback, {
  flush: 'post'
})

如果觉得配置选项太麻烦,对于watchEffect,有一个便捷的替代品:watchPostEffect

import { watchPostEffect } from 'vue'

watchPostEffect(() => {
  /* 在 Vue 更新后执行 */
})

停止侦听器

同步创建的侦听器会绑定在宿主组件实例上,并会在组件卸载时自动停止。

当异步创建了一个侦听器时,它不会被绑定到组件上,为了防止内存泄漏,需要手动停止。

watch和watchEffect函数存在一个返回值,是一个用于停止侦听器的函数:

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

// ...当该侦听器不再需要时
unwatch()

尽量不要使用异步创建侦听器,如果需要等待异步数据,可以使用条件式的侦听逻辑:文章来源地址https://www.toymoban.com/news/detail-736818.html

// 需要异步请求得到的数据
const data = ref(null)

watchEffect(() => {
  if (data.value) {
    // 数据加载后执行某些操作...
  }
})

到了这里,关于[vue3] watch和watchEffect简记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3的watchEffect和watch其他参数

    目录 1、watchEffect基本使用 2、watch 与 watchEffect的异同 3、watch其他参数使用 1、watchEffect基本使用 1 回调函数立即调用 2 回调函数依赖的数据都会被监控 3 深度监控 2 、 watch 与 watchEffect的异同 1、 相同点 :都可以对数据进行侦听 2、 不同点 :watchEffect回调函数立即调用、对回调

    2024年01月24日
    浏览(40)
  • Vue3的watchEffect的妙用,与watch的区别

    在Vue3中,引入了Composition API,其中的 watchEffect() 函数是一个非常强大和灵活的工具,用于处理响应式数据的变化,使得项目更加弹性和灵活。它与 watch 有所不同,本文将介绍 watchEffect() 的定义、特点、与 watch 的区别以及使用时的注意事项。 watchEffect() 函数用于创建一个自动

    2024年02月16日
    浏览(41)
  • vue全家桶进阶之路32:Vue3 WatchEffect和watch 监听

    在 Vue 3 中, watchEffect 是一个用于监听响应式数据变化的 API。它可以在函数内部自动跟踪数据的依赖,并在依赖变化时重新运行函数。 watchEffect  的作用以及各个参数的功能讲解: watchEffect(effect: (onInvalidate: InvalidateCbRegistrator) = void | (() = void) | Promisevoid, options?: WatchEffectOptio

    2023年04月17日
    浏览(73)
  • Vue3.0 watch和watchEffect监听器:VCA

    在项目中,有时候检测一个变量的值是否反升了变化。通常使用的watch或者使用低效的循环判断。 在次vue中给我们设置了深度监测数据繁盛变化的方法。 1.vue中提供了在watch监听时设置deep:true 就可以实现对对象的深度监听; 2.immediate:true,代表watch里面声明了之后会立马执行han

    2024年02月06日
    浏览(52)
  • vue3中,ref()、reactive()、computed()、watch() 和 watchEffect()的区别

    ref()、reactive()、computed()、watch() 和 watchEffect() 是 Vue 3 中常用的响应式处理函数,它们的主要区别如下: ref():ref() 函数用于将一个普通的 JavaScript 值转化为响应式对象。它返回一个具有 value 属性的对象,我们可以通过访问 value 属性来获取或修改值。当我们对 ref() 返回的对象

    2024年02月22日
    浏览(52)
  • 【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch

    所谓响应式就是界面和数据同步,能实现实时更新。 Vue 中用过三种响应式解决方案,分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 vue3中实现响应式数据的方法是使用ref和reactive。 reactive更推荐去定义复杂的数

    2024年02月03日
    浏览(43)
  • Vue Composition API之侦听器watch/watchEffect

    在日常的开发中,很多时候我们需要去对一些状态进行监听,比如当显示学生的成绩列表时,我们使用一个学生的学号student_num作为请求成绩的参数,如果没有监听机制,当学号student_num改变时,我们需要依赖用户的操作去刷新成绩。但是有了侦听器,我们可以通过侦听器去监

    2024年02月08日
    浏览(41)
  • Vue3通透教程【六】setup语法糖、computed函数、watch函数

    专栏介绍: 凉哥作为 Vue 的忠实 粉丝输出过大量的 Vue 文章,应粉丝要求开始更新 Vue3 的相关技术文章,Vue 框架目前的地位大家应该都晓得,所谓三大框架使用人数最多,公司选型最多的框架,凉哥之前在文章中也提到过就是 Vue 框架之所以火起来的原因,和 Vue 框架相比其

    2024年01月20日
    浏览(43)
  • RuoYi-Vue-generator 代码生成模块 动态 多数据源切换 前端+后台

    需求场景: 若依框架的30张数据表 和 业务使用的数据表,同数据源,但分开的两个库,原生若依只支持主库的代码生成,故自己修改添加代码来实现 若依多数据源的使用 修改页面ruoyi-uisrcviewstoolgenimportTable.vue el-form 中新增 el-form-item 添加 data 添加方法 ruoyi-uisrcapitool

    2024年02月04日
    浏览(41)
  • springboot整合多数据源的配置以及动态切换数据源,注解切换数据源

    在许多应用程序中,可能需要使用多个数据库或数据源来处理不同的业务需求。Spring Boot提供了简便的方式来配置和使用多数据源,使开发人员能够轻松处理多个数据库连接。如果你的项目中可能需要随时切换数据源的话,那我这篇文章可能能帮助到你 ℹ️:这里对于pom文件

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包