千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 深入理解Vue unmounted

深入理解Vue unmounted

来源:千锋教育
发布人:xqq
时间: 2023-11-25 03:46:34 1700855194

一、生命周期钩子介绍

Vue是基于组件的编程框架,每个组件都有自己的生命周期。这些生命周期由一系列的钩子函数组成,它们在组件实例化、更新和销毁的过程中被调用。下面是Vue的生命周期图示:


                        beforeCreate
                              ↓
                        created
                              ↓
                         beforeMount
                              ↓
                          mounted
                              ↓
                         beforeUpdate
                              ↓
                          updated
                              ↓
                         beforeDestroy
                              ↓
                           destroyed

二、Vue组件销毁

组件的销毁是指组件实例从DOM中删除,所有绑定的事件监听器和watcher都被销毁。当Vue组件被销毁时会触发一些钩子函数。这些钩子函数包括beforeDestroy和destroyed。


beforeDestroy: function() {
  // 在组件销毁之前执行的代码
}

destroyed: function() {
  // 在组件销毁之后执行的代码
}

三、Vue unmounted事件

除了Vue提供的beforeDestroy和destroyed钩子,Vue 3.0还引入了一个新的事件unmounted。unmounted事件与beforeDestroy和destroyed钩子类似,但是它可以用于非常规的场景,比如在组件从非DOM环境中切换时。例如,在单页应用程序(SPA)中,可以使用Vue Router在不同的路由之间切换。这时,组件会从DOM中被移除,但不会被销毁,因此也不会触发beforeDestroy和destroyed钩子。在这种情况下,可以使用unmounted事件来执行一些清理函数。


import { onUnmounted } from 'vue'

export default {
  setup() {
    onUnmounted(() => {
      // 在组件从非DOM环境中切换时执行的代码
    })
  }
}

四、在组件中使用unmounted事件

在使用unmounted事件时,我们可以在组件的setup函数中调用onUnmounted钩子,用于注册unmounted事件。


import { onUnmounted } from 'vue'

export default {
  setup() {
    onUnmounted(() => {
      // 执行清理函数
      document.removeEventListener('keydown', handleKeyDown)
    })

    const handleKeyDown = (event) => {
      // 处理按键事件
    }

    document.addEventListener('keydown', handleKeyDown)

    return {
      // 返回值...
    }
  }
}

五、总结

本文介绍了Vue的生命周期钩子,包括组件的创建、更新和销毁过程中所触发的钩子函数。我们还介绍了Vue 3.0引入的unmounted事件,它可以用于非常规的场景,比如在组件从非DOM环境中切换时。通过onUnmounted函数,我们可以在组件中注册unmounted事件,并在组件销毁时执行一些清理函数。

tags: vue2转vue3
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT