Vue3中如何检测数组的变化方式

 更新时间:2024年06月07日 08:44:16   作者:小新-alive  
这篇文章主要介绍了Vue3中如何检测数组的变化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

watch和watchEffect

Vue 3中,watch和watchEffect函数是用于监听数据变化的功能。

1. watch

  • watch函数是一个选项,可以在组件的选项中使用。
  • 它接收两个参数:要监听的数据表达式或计算属性,以及回调函数。
  • 当监听的数据发生变化时,回调函数会被触发执行。
  • 回调函数接收两个参数:新值(变化后的值)和旧值(变化前的值)。
  • 可以使用watch函数来监听简单的数据变化,以及需要精确控制监听行为的情况。
  • watch函数还支持配置选项,如deep用于深度监听对象或数组的变化,immediate用于在初始化时立即执行回调函数等。

示例代码:

import { watch } from 'vue';

watch(
  () => myArray, // 监听的数组
  (newArray, oldArray) => {
    // 数组发生变化时的回调函数
    console.log('数组变化了', newArray, oldArray);
  }
);

在上面的代码中,我们使用watch函数来监听myArray数组的变化。

当数组发生变化时,回调函数将被执行。

2. watchEffect

  • watchEffect函数是一个响应式副作用函数,可以在组件的代码块中使用。
  • 它接收一个函数作为参数,该函数内部可以使用响应式数据。
  • 当响应式数据变化时,函数会被自动触发执行。
  • watchEffect函数会自动追踪函数内部使用的响应式数据,并在其变化时重新执行函数。
  • 这意味着你无需显式指定要监听的数据,而是让Vue自动追踪依赖关系。
  • watchEffect函数适用于需要自动追踪多个响应式数据变化的情况,以及需要处理副作用操作的场景。

示例代码:

import { watchEffect } from 'vue';

watchEffect(() => {
  console.log('数组变化了', myArray);
});

在上面的代码中,我们使用watchEffect函数来监听myArray数组的变化。

一旦数组发生变化,回调函数将被执行。

3. 区别

3.1 监听的方式

  • watch选项:watch选项需要在组件的选项中定义,并接收两个参数:要监听的数据表达式和回调函数。它可以监听指定的数据或计算属性,并在其变化时执行回调函数。
  • watchEffect函数:watchEffect函数可以在组件的代码块中直接使用,并接收一个函数作为参数。它会自动追踪函数内部使用的响应式数据,并在其变化时执行函数。

3.2 追踪依赖

  • watch选项:watch选项需要明确指定要监听的数据表达式,只有该表达式变化时才会触发回调函数。如果需要监听多个数据,可以使用包含这些数据的计算属性。
  • watchEffect函数:watchEffect函数会自动追踪函数内部使用的响应式数据,并在任何这些数据变化时触发函数。它会自动收集依赖,并在依赖发生变化时重新运行函数。

3.3 调用时机

  • watch选项:watch选项在初始化时会立即执行一次回调函数,并在监听的数据发生变化时再次执行回调函数。
  • watchEffect函数:watchEffect函数在组件渲染时会立即执行一次函数,并在其内部使用的响应式数据发生变化时再次执行函数。

3.4 返回值

  • watch选项:watch选项的回调函数可以返回一个清理函数,用于在不需要监听时进行清理操作。
  • watchEffect函数:watchEffect函数没有返回值,且无法手动停止追踪和清理。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • VUE使用vue create命令创建vue2.0项目的全过程

    VUE使用vue create命令创建vue2.0项目的全过程

    vue-cli是创建Vue项目的一个脚手架工具,vue-cli提供了vue create等命令,下面这篇文章主要给大家介绍了关于VUE使用vue create命令创建vue2.0项目的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 浅谈Vue响应式(数组变异方法)

    浅谈Vue响应式(数组变异方法)

    这篇文章主要介绍了浅谈Vue响应式(数组变异方法),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • VUE+Element实现增删改查的示例源码

    VUE+Element实现增删改查的示例源码

    这篇文章主要介绍了VUE+Element实现增删改查的示例源码,帮助大家更好的理解和使用vue,感兴趣的朋友可以了解下
    2020-11-11
  • Vue指令工作原理实现方法

    Vue指令工作原理实现方法

    自定义指令是 vue 中使用频率仅次于组件,其包含 bind 、 inserted 、 update 、 componentUpdated 、 unbind 五个生命周期钩子,接下来通过本文给大家详细介绍Vue指令工作原理实现方法,需要的朋友参考下吧
    2021-06-06
  • Vue组件如何设置Props实例详解

    Vue组件如何设置Props实例详解

    props主要用于组件的传值,他的工作就是为了接收外面传过来的数据,与data、el、ref是一个级别的配置项,下面这篇文章主要给大家介绍了关于Vue组件如何设置Props的相关资料,需要的朋友可以参考下
    2022-06-06
  • vue2前端导出pdf文件实例demo

    vue2前端导出pdf文件实例demo

    在Vue应用中,将页面导出为PDF文件通常涉及到前端技术的组合,下面这篇文章主要给大家介绍了关于vue2前端导出pdf文件的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • vue结合el-upload实现腾讯云视频上传功能

    vue结合el-upload实现腾讯云视频上传功能

    这篇文章主要介绍了vue结合el-upload实现腾讯云视频上传功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Vue3.0中Ref与Reactive的区别示例详析

    Vue3.0中Ref与Reactive的区别示例详析

    在vue3中对响应式数据的声明官方给出了ref()和reactive()这两种方式,这篇文章主要给大家介绍了关于Vue3.0中Ref与Reactive区别的相关资料,需要的朋友可以参考下
    2021-07-07
  • vue轻松实现水印效果

    vue轻松实现水印效果

    这篇文章主要为大家详细介绍了vue轻松实现水印效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Vue中直接操作数组索引不奏效的问题解读

    Vue中直接操作数组索引不奏效的问题解读

    这篇文章主要介绍了Vue中直接操作数组索引不奏效的问题解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论