vue3中onUnmounted使用详解

 更新时间:2024年03月28日 11:53:24   作者:Br不二  
在Vue3中,onUnmounted是一个生命周期钩子,它会在组件实例被卸载(unmounted)和销毁之前被调用,本文给大家介绍vue3中onUnmounted使用详解,感兴趣的朋友跟随小编一起看看吧

vue3中onUnmounted详解

在 Vue 3 中,onUnmounted 是一个生命周期钩子,它会在组件实例被卸载(unmounted)和销毁之前被调用。这个钩子特别有用,因为它允许你在组件卸载时执行一些清理工作,比如取消定时器、移除事件监听器、清理手动创建的 DOM 元素等。

使用 onUnmounted

在 Vue 3 的 Composition API 中,你可以使用 onUnmounted 钩子来定义组件卸载时需要执行的代码。下面是一个简单的例子:

import { onUnmounted, ref } from 'vue';
export default {
  setup() {
    const timer = ref(null);
    // 启动一个定时器
    onMounted(() => {
      timer.value = setInterval(() => {
        console.log('Timer is running...');
      }, 1000);
    });
    // 在组件卸载时清除定时器
    onUnmounted(() => {
      clearInterval(timer.value);
    });
    return {
      // ...其他响应式数据和方法
    };
  },
};

在这个例子中,我们在 onMounted 钩子中启动了一个定时器,并在 onUnmounted 钩子中清除了它。这样,当组件被卸载时,定时器也会被停止,避免了不必要的内存消耗和潜在的错误。

注意事项

  • 确保在 onUnmounted 中清理所有在组件生命周期中创建的资源,以避免内存泄漏。
  • 如果你的组件使用了第三方库或插件,请查阅相关文档以了解是否有特定的清理步骤需要在组件卸载时执行。
  • onUnmounted 只在组件卸载时执行一次,所以如果你需要多次执行某些操作,请确保在组件内部适当地管理它们。

与 Options API 的对比

在 Vue 2 的 Options API 中,类似的清理工作通常在 beforeDestroydestroyed 生命周期钩子中进行。然而,在 Vue 3 的 Composition API 中,onUnmounted 提供了更灵活和模块化的方式来处理组件卸载时的逻辑。

扩展:

在Vue 3中,组件生命周期中的不同阶段对组件的影响也略有不同。以下是一些不同阶段的影响:
setup()函数阶段
在setup()函数阶段,您可以做一些准备性的工作。您可以定义响应式数据、计算属性、方法等等。但是,您需要注意的是,由于setup()函数是在组件实例化之前调用的,因此您无法访问到this上下文并且应该使用第二个参数—— context 对象。context 包含了一些有用的属性和方法,比如如何访问父级或子级组件等。在setup()函数中定义的数据和方法将不会在模板中直接使用,如果需要在模板中使用,则需要通过 return 语句把它们暴露出去。

  • onBeforeMount()和onMounted()阶段

在组件进入onBeforeMount()阶段时,Vue 3会创建虚拟DOM并将其与组件关联起来。在该阶段中,您可以访问组件的DOM,并在挂载期之前对其进行修改。在组件进入onMounted()阶段后,Vue 3完成了组件的挂载。在此阶段,您可以进行一些副作用操作(如API调用、添加事件监听器等)。

  • onBeforeUpdate()和onUpdated()阶段

在组件进入onBeforeUpdate()阶段时,Vue 3检测到响应式数据发生了变化,并准备重新渲染组件。在该阶段,您可以访问并修改组件的DOM。在组件进入onUpdated()阶段后,Vue 3完成了重新渲染。在此阶段,您可以进行一些副作用操作(如API调用、添加事件监听器等)。

  • onBeforeUnmount()和onUnmounted()阶段

在组件进入onBeforeUnmount()阶段时,Vue 3已经准备卸载组件。在该阶段,您可以执行一些销毁操作(如取消订阅、清除计时器等)。在组件进入onUnmounted()阶段后,Vue 3完成了组件的卸载。在此阶段,您不能访问组件的DOM或响应式数据。

总结

        在Vue 3的组件生命周期中,不同阶段对应的影响也略有不同。setup()函数阶段可以用来定义和准备数据和方法,而Vue 3的新生命周期函数则提供了更细致的钩子,以便于您在不同阶段完成不同的操作。理解不同阶段的影响和使用方法,可以使您更好地掌握Vue 3的组件生命周期,以提高组件的性能和可维护性。

到此这篇关于vue3中onUnmounted详解的文章就介绍到这了,更多相关vue3中onUnmounted内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue css 引入asstes中的图片无法显示的四种解决方法

    vue css 引入asstes中的图片无法显示的四种解决方法

    这篇文章主要介绍了vue css 引入asstes中的图片 无法显示的几种解决方案,本文给出了四种解决方法,每种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • 如何在Vue中使用debouce防抖函数

    如何在Vue中使用debouce防抖函数

    本文主要介绍在Vue中使用debouce防抖函数,设置一个门槛值,表示两次 Ajax 通信的最小间隔时间。如果在间隔时间内,发生新的keydown事件,则不触发 Ajax 通信,并且重新开始计时。如果过了指定时间,没有发生新的keydown事件再将数据发送出去,这便是debouce防抖函数
    2021-12-12
  • Vue3中使用vue3-print-nb实现打印功能

    Vue3中使用vue3-print-nb实现打印功能

    这篇文章主要为大家详细介绍了Vue3中如何使用vue3-print-nb实现打印功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起参考一下
    2025-02-02
  • 使用Vue2实现简单的购物车功能(可直接使用)

    使用Vue2实现简单的购物车功能(可直接使用)

    这篇文章主要给大家介绍了如何使用Vue2实现简单的购物车功能,文中有相关的代码示例,对我们的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-08-08
  • vue3更新的setup语法糖实例详解

    vue3更新的setup语法糖实例详解

    vue3上线已经很久了,许多小伙伴应该都已经使用过vue3了,下面这篇文章主要给大家介绍了关于vue3更新的setup语法糖的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • vue3如何使用watch监听props中的数据

    vue3如何使用watch监听props中的数据

    在vue项目中,父子组件数据传递是最常见的场景,但是今天在开发过程中父级数据传递到子组件,控制子组件的显隐,下面这篇文章主要给大家介绍了关于vue3如何使用watch监听props中数据的相关资料,需要的朋友可以参考下
    2022-10-10
  • Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)

    Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)

    这篇文章主要介绍了Vue中Table组件行内右键菜单实现方法,该项目是基于 vue + AntDesign的,具体实例代码给大家介绍的非常详细 ,需要的朋友可以参考下
    2019-11-11
  • vue.js源代码core scedule.js学习笔记

    vue.js源代码core scedule.js学习笔记

    这篇文章主要为大家详细介绍了vue.js源代码core scedule.js的学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

    Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)

    这篇文章给大家介绍了基于vue实现拖动滑块验证功能,代码引用css与js都是线上的,将代码全部复制到一个html中可以直接打开,超级简单,感兴趣的朋友跟随脚本之家小编一起看看吧
    2018-08-08
  • 对Vue table 动态表格td可编辑的方法详解

    对Vue table 动态表格td可编辑的方法详解

    今天小编就为大家分享一篇对Vue table 动态表格td可编辑的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08

最新评论