当前位置: 首页 > article >正文

vue3的生命周期

Vue 3 的生命周期与 Vue 2 类似,但在 Composition API 中提供了新的方式来使用生命周期钩子。以下是 Vue 3 的生命周期钩子及其用法:

1. Options API (选项式API)中的生命周期钩子

Vue 3 保留了 Vue 2 的大部分生命周期钩子,但有两个钩子被重命名:

  • beforeDestroy → beforeUnmount

  • destroyed → unmounted

以下是 Vue 3 中 Options API 的生命周期钩子:

创建阶段(Initialization)
  • beforeCreate:

    • 在实例初始化之后,数据观测(data observation)和事件/侦听器配置之前被调用。

  • created:

    • 在实例创建完成后被调用。

    • 此时,datamethodscomputed 等已经初始化,但 DOM 还未生成。

挂载阶段(Mounting)
  • beforeMount:

    • 在挂载开始之前被调用,此时模板已经编译完成,但尚未将 DOM 渲染到页面。

  • mounted:

    • 在实例挂载到 DOM 后被调用。

    • 此时,DOM 已经渲染完成,可以访问 DOM 元素。

更新阶段(Updating)
  • beforeUpdate:

    • 在数据更新导致 DOM 重新渲染之前被调用。

    • 此时,数据已经更新,但 DOM 还未重新渲染。

  • updated:

    • 在数据更新导致 DOM 重新渲染之后被调用。

    • 此时,DOM 已经更新完成。

销毁阶段(Destruction)
  • beforeUnmount:

    • 在实例卸载之前被调用。

    • 此时,实例仍然完全可用,可以执行一些清理操作(如清除定时器、取消事件监听等)。

  • unmounted:

    • 在实例卸载之后被调用。

    • 此时,实例的所有指令和事件监听器已被移除,子实例也被卸载。

激活阶段(Keep-Alive 相关)
  • activated:

    • 当被 <keep-alive> 缓存的组件激活时调用。

  • deactivated:

    • 当被 <keep-alive> 缓存的组件停用时调用。

2. Composition API (组合式API)中的生命周期钩子

在 Composition API 中,生命周期钩子通过 onX 函数的形式使用。这些函数需要在 setup() 函数中调用。

创建阶段
  • onBeforeMount 对应  beforeMount

import { onBeforeMount } from "vue";

setup() {
  onBeforeMount(() => {
    console.log("onBeforeMount: 模板编译完成,DOM 未渲染");
  });
}
  •  onMounted 对应  mounted
import { onMounted } from "vue";

setup() {
  onMounted(() => {
    console.log("onMounted: 实例已挂载到 DOM,可以访问 DOM 元素");
  });
}
更新阶段
  • onBeforeUpdate 对应  beforeUpdate
import { onBeforeUpdate } from "vue";

setup() {
  onBeforeUpdate(() => {
    console.log("onBeforeUpdate: 数据已更新,DOM 未重新渲染");
  });
}
  • onUpdated 对应  updated
import { onUpdated } from "vue";

setup() {
  onUpdated(() => {
    console.log("onUpdated: 数据已更新,DOM 已重新渲染");
  });
}
销毁阶段
  • onBeforeUnmount 对应  beforeUnmount
import { onBeforeUnmount } from "vue";

setup() {
  onBeforeUnmount(() => {
    console.log("onBeforeUnmount: 实例即将卸载,仍可访问数据和方法");
  });
}
  • onUnmounted 对应  unmounted
import { onUnmounted } from "vue";

setup() {
  onUnmounted(() => {
    console.log("onUnmounted: 实例已卸载");
  });
}
激活阶段
  • onActivated 对应  activated
import { onActivated } from "vue";

setup() {
  onActivated(() => {
    console.log("onActivated: 组件被激活");
  });
}
  • onDeactivated 对应  deactivated
import { onDeactivated } from "vue";

setup() {
  onDeactivated(() => {
    console.log("onDeactivated: 组件被停用");
  });
}

3. 生命周期流程图

Vue 3 的生命周期流程与 Vue 2 类似,以下是简化流程图:

  1. 创建阶段:

    • beforeCreate → created

  2. 挂载阶段:

    • beforeMount → mounted

  3. 更新阶段:

    • beforeUpdate → updated

  4. 销毁阶段:

    • beforeUnmount → unmounted

  5. 激活阶段(仅适用于 <keep-alive> 缓存的组件):

    • activated → deactivated

4. Options API 与 Composition API 对比

生命周期钩子Options APIComposition API
创建阶段beforeCreate无直接对应
创建阶段created无直接对应
挂载阶段beforeMountonBeforeMount
挂载阶段mountedonMounted
更新阶段beforeUpdateonBeforeUpdate
更新阶段updatedonUpdated
销毁阶段beforeUnmountonBeforeUnmount
销毁阶段unmountedonUnmounted
激活阶段activatedonActivated
激活阶段deactivatedonDeactivated

总结

Vue 3 的生命周期钩子与 Vue 2 类似,但在 Composition API 中提供了更灵活的方式来使用这些钩子。无论是 Options API 还是 Composition API,理解生命周期的调用时机和用途,都能帮助你更好地控制组件的行为和优化性能。

 


http://www.kler.cn/a/565498.html

相关文章:

  • 如何将图片档案信息读取出来?并把档案信息相关性进行关联
  • Skype for Business网络延迟怎么办?
  • 关于冯诺依曼体系结构与操作系统的更基础、更详细的解析,结合技术原理与实现细节,帮助系统性学习
  • Kafka 赋能高效消息队列管理:从原理到实战
  • 【JAVA-数据结构】Lambda表达式
  • Docker Hub 使用规则与限制全解析
  • 计算机视觉算法实战——高精度分割(主页有源码)
  • 计算机毕业设计SpringBoot+Vue.js中小企业设备管理系统(源码+文档+PPT+讲解)
  • C++ 红黑树万字详解(含模拟实现(两种版本))
  • 在 Vue 3 的 Composition API 中,如何实现动态组件
  • 二叉树的概念和静态实现 【复习笔记】
  • C++中map容器常见用法(AI)
  • ISIS(中间系统到中间系统)——基础
  • 跟着deepseek再学习git
  • 常用 ADB 命令汇总
  • JavaScript系列(85)--包管理工具详解
  • Redis开启远程连接
  • 【废物研究生零基础刷算法】DFS与递归(二)习题
  • Ubuntu解决Genesis报错
  • 事件【Qt】