Vue3 watchEffect的使用教程和相关概念

 更新时间:2024年08月20日 09:05:48   作者:道长不会写代码  
Vue 3 引入了 Composition API,其中 watchEffect 是一个非常强大的工具,用于响应式地追踪依赖项的变化,本文将详细介绍 watchEffect 的使用方法和相关概念,文中有详细的代码供大家参考,需要的朋友可以参考下

简介

Vue 3 引入了 Composition API,其中 watchEffect 是一个非常强大的工具,用于响应式地追踪依赖项的变化。本文将详细介绍 watchEffect 的使用方法和相关概念。

什么是 watchEffect?

watchEffect 是 Vue 3 的 Composition API 中的一个函数,用于自动追踪其回调函数中使用的响应式状态,并在状态变化时重新执行回调函数。

watchEffect的基本使用

引入 watchEffect

在组件中使用 watchEffect 之前,需要先从 Vue 中引入它:

import { watchEffect, reactive } from 'vue';

使用 watchEffect

watchEffect 接收一个回调函数作为参数,这个回调函数会被立即执行一次,并且每当其依赖的响应式状态变化时,都会重新执行。

export default {
  setup() {
    const state = reactive({
      count: 0
    });

    watchEffect(() => {
      console.log(`count is now: ${state.count}`);
    });

    // 测试 count 的变化
    state.count++;
  }
};

在上面的例子中,count 的变化会在控制台打印出相应的值。

watchEffect的高级用法

响应特定响应式状态

watchEffect 允许你指定一个包含响应式引用的数组,来告诉 Vue 应该追踪哪些响应式状态。

export default {
  setup() {
    const state = reactive({
      count: 0,
      name: 'Vue 3'
    });

    watchEffect(() => {
      console.log(`count: ${state.count}, name: ${state.name}`);
    });

    // 只有 count 发生变化时,才会触发
    state.count++;
  }
};

执行副作用的清理

watchEffect 返回一个停止函数,可以用来停止副作用的自动重新运行,或者执行清理操作。

export default {
  setup() {
    const intervalRef = ref();

    const stop = watchEffect(() => {
      intervalRef.value = setInterval(() => {
        console.log('Interval running');
      }, 1000);
    });

    // 执行一些操作后停止 watchEffect
    setTimeout(() => {
      stop(); // 停止 watchEffect
      clearInterval(intervalRef.value); // 清理定时器
    }, 5000);
  }
};

使用 watchEffect 作为响应式引用

通过将 watchEffect 作为响应式引用,可以在其他响应式操作中使用它。

export default {
  setup() {
    const state = reactive({
      count: 0
    });

    const effect = watchEffect(() => {
      console.log(`count is now: ${state.count}`);
    });

    // 在需要的时候手动触发 effect
    state.count++;
  }
};

watchEffect与Vue 2的watch选项的区别

Vue 2 中的 watch 是一个组件选项,而 Vue 3 中的 watchEffect 是一个函数。watchEffect 提供了更灵活的副作用处理方式,并且与 Vue 3 的 Composition API 更加契合。

结语

通过本文的介绍,你应该对 Vue 3 中的 watchEffect 有了基本的了解。watchEffect 是 Vue 3 响应式系统的核心功能之一,能够极大地简化副作用的处理逻辑,提高代码的可读性和可维护性。在实际开发中,合理使用 watchEffect 将使你的 Vue 应用更加强大和灵活。

以上就是Vue3 watchEffect的使用教程和相关概念的详细内容,更多关于Vue3 watchEffect教程的资料请关注脚本之家其它相关文章!

相关文章

  • vue history 模式打包部署在域名的二级目录的配置指南

    vue history 模式打包部署在域名的二级目录的配置指南

    这篇文章主要介绍了vue history 模式打包部署在域名的二级目录的配置指南 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Vue通过ref获取不到$refs问题

    Vue通过ref获取不到$refs问题

    这篇文章主要介绍了Vue通过ref获取不到$refs问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • 在浏览器console中如何调用vue内部方法

    在浏览器console中如何调用vue内部方法

    这篇文章主要介绍了在浏览器console中如何调用vue内部方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Vue组件样式作用域问题:原因与解决方式

    Vue组件样式作用域问题:原因与解决方式

    本文将深入探讨 Vue 组件样式作用域的常见问题,并提供多种解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • vue怎样获取当前时间,并且传递给后端(不用注解)

    vue怎样获取当前时间,并且传递给后端(不用注解)

    这篇文章主要介绍了vue怎样获得当前时间,并且传递给后端(不用注解)问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • vue3 ref 和reactive的区别详解

    vue3 ref 和reactive的区别详解

    本文主要介绍了vue3 ref 和reactive的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • vue实现微信获取用户信息的方法

    vue实现微信获取用户信息的方法

    这篇文章主要介绍了vue实现微信获取用户信息的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • Element UI Dialog对话框改成固定高度超出部分滚动条滚动

    Element UI Dialog对话框改成固定高度超出部分滚动条滚动

    这篇文章主要给大家介绍了关于Element UI Dialog对话框改成固定高度超出部分滚动条滚动的相关资料,el-dialog默认高度是自由拉伸的,当内容超过屏幕时会出现滚动条,按钮和标题都会随着滚动,用户体验不好,需要的朋友可以参考下
    2024-05-05
  • 在vue中使用echarts(折线图的demo,markline用法)

    在vue中使用echarts(折线图的demo,markline用法)

    这篇文章主要介绍了在vue中使用echarts(折线图的demo,markline用法),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • vue 获取及修改store.js里的公共变量实例

    vue 获取及修改store.js里的公共变量实例

    今天小编就为大家分享一篇vue 获取及修改store.js里的公共变量实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论