Vue.js框架为组件设计了一套完整的生命周期,涵盖了从创建到销毁的全过程。这些生命周期钩子函数(lifecycle hooks)允许开发者在特定的阶段执行自定义逻辑,以便更好地管理组件的状态和与其交互的DOM元素。Vue 的生命周期钩子函数可以分为三类:创建、更新和销毁,以下是Vue组件的核心生命周期及其大致执行顺序:

  1. beforeCreate: 在实例初始化之后,数据观测(data observer)和事件/属性配置之前被调用。此时,组件的propsdata还未初始化,不能访问它们。

  2. created: 实例已经创建完成,所有propsdata已经初始化,但挂载阶段未开始,$el属性还不存在,无法操作DOM。在此阶段可以进行一些初始数据的处理或异步数据的获取。

  3. beforeMount: 模板编译完成,即将开始挂载到DOM节点。此时,$el属性已被赋值,但真实的DOM还未渲染出来,可以进行DOM相关的准备工作。

  4. mounted: 组件已经被创建并成功挂载到DOM中,可以访问到真实的DOM元素并进行操作。如果需要与第三方库进行DOM交互或者触发某些依赖于DOM的初始化工作,此时是最合适的时机。

  5. beforeUpdate: 数据发生变化触发更新时调用。此时新的DOM还未生成,可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

  6. updated: 组件DOM已完成更新。此时可以访问到更新后的DOM,并执行依赖于新DOM的操作。注意避免在此处频繁操作DOM,以免引起不必要的性能损耗。

  7. beforeUnmount: 组件即将卸载,可以在这一步进行必要的清理工作,如取消定时器、解绑事件监听器、清理第三方库实例等。

  8. unmounted: 组件已被卸载,相关DOM元素已被销毁。此阶段后,不应再有任何与该组件相关的操作。

另外,Vue 2.2.0版本引入了两个额外的生命周期钩子:

  1. activated: 仅适用于<keep-alive>缓存的组件。当组件被激活时(离开缓存并重新渲染)调用。

  2. deactivated: 同样适用于<keep-alive>缓存的组件。当组件被停用并放入缓存时调用。

理解并合理利用Vue的生命周期钩子,可以帮助我们编写出结构清晰、高效且易于维护的组件代码。

为了方便理解,可以看下面这张图(图片来源于黑马程序员,侵删)。它展示了从创建一个Vue实例开始,到销毁该实例为止的整个过程中的各个关键阶段和对应的钩子函数。其实最为常用的有:

  1. created:在实例创建完成后调用,此时数据观测和事件配置都已经生效,但还没有开始渲染。

  2. mounted:在模板渲染成HTML后调用,此时可以访问到真实的DOM元素。

Vue学习:11.了解生命周期的更多相关文章

  1. VUE 学习笔记 二 生命周期

    1.除了数据属性,Vue 实例还暴露了一些有用的实例属性与方法.它们都有前缀 $,以便与用户定义的属性区分开来 var data = { a: 1 } var vm = new Vue({ el: ' ...

  2. vue 学习一 组件生命周期

    先上一张vue组件生命周期的流程图 以上就是一个组件完整的生命周期,而在组件处于每个阶段时又会提供一些周期钩子函数以便我们进行一些逻辑操作,而总体来讲 vue的组件共有8个生命周期钩子 beforeC ...

  3. vue学习(十九) 生命周期 了解

    生命周期:从vue实例创建.运行.到销毁期间,总是伴随着各种各样的事件,这些事件统称为生命周期 生命周期钩子:就是生命周期事件的别名而已 生命周期钩子==生命周期函数==生命周期事件 生命周期函数分类 ...

  4. Vue – 基础学习(1):对生命周期和钩子函的理解

    一.简介 先贴一下官网对生命周期/钩子函数的说明(先贴为敬):所有的生命周期钩子自动绑定 this 上下文到实例中,因此你可以访问数据,对属性和方法进行运算.这意味着你不能使用箭头函数来定义一个生命周 ...

  5. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十九║Vue基础: 样式动态绑定+生命周期

    回顾 哈喽大家好,前后端分离系列文章又开始了,今天周一,还是感谢大家花时间来观看我写的博客,周末呢,没有写文章,但是也没有闲着,主要是研究了下遗留问题,看过之前文章的应该知道,之前的在AOP使用Red ...

  6. Vue2.5笔记:Vue的实例与生命周期

    理解与认识 Vue 的实例是我们学习 Vue 非常重要的一步,也是非常必须的,因为实例是它的一个起点,也是它的一个入口,只有我们创建一个 Vue 实例之后,我们才行利用它进行一些列的操作. 首先 Vu ...

  7. vue 学前班003(生命周期)

    ue把整个生命周期划分为创建.挂载.更新.销毁等阶段,每个阶段都会给一些“钩子”让我们来做一些我们想实现的动作.学习实例的生命周期,能帮助我们理解vue实例的运作机制,更好地合理利用各个钩子来完成我们 ...

  8. vue基本配置和生命周期

    Vue的实例是Vue框架的入口,其实也就是前端的ViewModel,它包含了页面中的业务逻辑处理.数据模型等,当然它也有自己的一系列的生命周期的事件钩子,辅助我们进行对整个Vue实例生成.编译.挂着. ...

  9. 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)

    一.Vue的实例 1.1.创建一个 Vue 的实例 每个 Vue 应用都是通过 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 ...

  10. 详解Vue 实例中的生命周期钩子

    Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑.数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻 ...

随机推荐

  1. HarmonyOS NEXT应用开发案例——二级联动

    介绍 本示例主要介绍了List组件实现二级联动(Cascading List)的场景. 该场景多用于短视频中拍摄风格的选择.照片编辑时的场景的选择. 效果图预览 使用说明: 滑动二级列表侧控件,一级列 ...

  2. OpenKruise v1.3:新增自定义 Pod Probe 探针能力与大规模集群性能显著提升

    简介: 在版本 v1.3 中,OpenKruise 提供了新的 CRD 资源 PodProbeMarker,改善了大规模集群的一些性能问题,Advanced DaemonSet 支持镜像预热,以及 C ...

  3. 为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(下)

    简介: 在上篇中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行下回答. 在上篇中,主要介绍了 Serverless Devs 多环境功能 ...

  4. 【产品能力深度解读】连续入围Gartner魔力象限的Quick BI有何魔力?

    简介: 国际权威分析机构Gartner发布2021年商业智能和分析平台魔力象限报告,阿里云Quick BI再度入选,并继续成为该领域魔力象限唯一入选的中国企业. Quick BI凭借在增强分析能力上的 ...

  5. 10个Bug环环相扣,你能解开几个?

    ​简介:由阿里云云效主办的2021年第3届83行代码挑战赛已经收官.超2万人围观,近4000人参赛,85个团队组团来战.大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎. ...

  6. MSIL 静态类在 IL 定义上和非静态类的差别

    本文来聊聊 MSIL 的基础知识,给一个 C# 的类标记了 static 之后和标记 static 之前,生成这个类的 IL 代码有什么不同 如以下的代码是一个默认的控制台程序 class Progr ...

  7. 微软开源 MS-DOS「GitHub 热点速览」

    上周又是被「大模型」霸榜的一周,各种 AI.LLM.ChatGPT.Sora.RAG 的开源项目在 GitHub 上"争相斗艳".这不 Meta 刚开源 Llama 3 没几天,苹 ...

  8. 关于ITIL的习惯性误解

    关于ITIL的习惯性误解 1. ITIL是标准?不是!ITIL本质是一套适合西方社会信息化阶段的 模板原版教材 最佳实践(Best Practice),不是标准. 大量的培训师和咨询顾问将其包装成&q ...

  9. iptables命令详解

    安装iptables yum install iptables-services 编写允许访问的策略 vim /etc/sysconfig/iptables # sample configuratio ...

  10. Splashtop 扩展了所有 Android 8.0 以上设备的远程控制功能

    好消息:Splashtop远程访问和远程支持软件现在支持100多个品牌的 Android 设备. 2020年9月15日,远程访问和远程支持解决方案的全球领导者 Splashtop Inc. 宣布:所有 ...