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. 全球首款乘云而来的存储产品CDS诞生!

    ​9月22日,阿里云发布全球首款"云定义存储"(Cloud Defined Storage,CDS)产品.作为一款本地部署的分布式存储产品,阿里云CDS拥有与公共云存储相同的技术架 ...

  2. 延迟绑定与retdlresolve

    延迟绑定与retdlresolve 我们以前在ret2libc的时候,我们泄露的libc地址是通过延迟绑定实现的,我们知道,在调用libc里面的函数时候,它会先通过plt表和gor表绑定到,函数真实地 ...

  3. [FE] uni-app 导航栏开发指南

    一种是 原生导航栏添加自定义按钮.简单明了. pages.json 配置 { "path": "pages/log/log", "style" ...

  4. [Go] golang 两个数组 list 的合并方式

    s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...

  5. dotnet 读 WPF 源代码 聊聊 DispatcherTimer 的实现

    本文来告诉大家在 WPF 框架里面,是如何实现 DispatcherTimer 的功能.有小伙伴告诉我,读源代码系列的博客看不动,原因是太底层了.我尝试换一个方式切入逻辑,通过提问题和解决问题的方法, ...

  6. Git实战技巧:恢复被强制push -f失踪的代码

    前言 Git是一个易学难精的分布式版本控制系统,被我们码农常用于代码的管理.如果你还不了解Git,建议先通过廖雪峰的Git教程进行了解,再来看本文,因为本文以使用技巧为主,不会在基础名词上做过多解释. ...

  7. 【Android】Binder的Oneway拦截

    在某些虚拟化,免安装,打点,环境检测,拦截器等场景,针对Android系统服务接口的拦截是常用的技术方案.通常只是针对正向的接口调用,如果涉及被动的服务回调拦截,则实现起来就有些许麻烦. 说明 由于我 ...

  8. Centos7 忘记密码的解决方法

    ilo远程修改 重启服务器,点击cold boot 按钮. 开机后,进入内核上按"e",进入编辑模式 在linux删除linux16这一行的地方,写入如下语句,在*.img行之前. ...

  9. 【简说Python WEB】Jinja2模板

    目录 [简说Python WEB]Jinja2模板 目前环境的代码树 抽离出来的Html模板 渲染模板 条件语句 循环语句 系统环境:Ubuntu 18.04.1 LTS Python使用的是虚拟环境 ...

  10. centos 文件系统权限

    模板:drwxrwxrwx r表是读 (Read) .w表示写 (Write) .x表示执行 (eXecute) 读.写.运行三项权限可以用数字表示,就是r=4,w=2,x=1, 777就是rwxrw ...