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

Vue生命周期

一、Vue的生命周期及其阶段

Vue生命周期:一个Vue实例从 创建 销毁 的整个过程。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。

生命周期的四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 

二、Vue生命周期函数(钩子函数) 

Vue生命周期过程中,会自动运行一些函数,被称为【生命周期钩子》让开发者可以在【特定阶段】运行自己的代码。

接下来展开讲讲这些生命周期函数:

  • beforeCreate(创建前):实例初始化后立即调用,此时数据观测(data)、事件/监听器( event /watcher )尚未设置,也就是说不能访问到data、computed、watch、methods上的方法和数据。

  • created(创建后) :实例创建完成,实例上配置的 options 包括 data、computed、watch、methods 等都配置完成,但DOM未挂载,所以不能访问到 $el 属性。

  • 用途:适合数据初始化​(如发起异步请求),但不可操作 DOM。
  • beforeMount(挂载前):模板已编译为虚拟 DOM,但尚未渲染到页面。此时 $el 是初始模板(如 {{a}} 未解析)。无法操作渲染后的 DOM 元素。

  • 虚拟DOM本质上是一个JavaScript对象,它是对真实DOM的抽象。虚拟DOM通过在内存中创建一个虚拟的DOM树,记录新旧树的差异(diff),然后将这些差异一次性更新到真实的DOM中。这样可以避免频繁的DOM操作,提高渲染效率。

  • mounted(挂载后):实例已挂载到真实 DOM,$el 可访问,页面完成首次渲染。

  • 用途:适合DOM 操作​(如初始化第三方库)、异步请求依赖 DOM 的场景

  • beforeUpdate(更新前):响应式数据更新时调用,数据已更新,但 DOM 尚未重新渲染(页面显示旧数据)。

  • updated(更新后) :虚拟 DOM 重新渲染并更新真实 DOM 后调用。

  • 用途:可执行依赖新 DOM 的操作,但需避免在此修改数据(可能导致无限循环)。

  • beforeDestroy(销毁前):实例销毁之前调用。这一步,实例仍然完全可用,this 仍能获取到实例,datamethods 可访问。

  •  ​用途:执行清理工作​(如移除事件监听、取消定时器)。

  • destroyed(销毁后):实例销毁完成,所有绑定(数据、事件、子组件)已解除。无法再操作实例的属性和方法。

created和mounted的区别

  • created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。

  • mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

三、keep-alive 的生命周期

keep-alive 是 Vue 提供的一个内置组件,用来对组件进行缓存——在组件切换过程中将状态保留在内存中,防止重复渲染DOM。

如果为一个组件包裹了 keep-alive,那么它会多出两个生命周期:deactivatedactived同时,beforeDestroy 和 destroyed 就不会再被触发了,因为组件不会被真正销毁。

  • 当组件被换掉时,会被缓存到内存中,触发 deactivated 生命周期
  • 当组件被切回来时,再去缓存里找这个组件,触发 activated 钩子函数

四、Vue2 与 Vue3 生命周期的区别

阶段Vue 2 钩子函数Vue 3 钩子函数(选项式)Vue 3 Composition API 函数
创建前beforeCreatebeforeCreate(不推荐使用)由 setup() 替代逻辑
创建后createdcreated(不推荐使用)由 setup() 替代逻辑
挂载前beforeMountbeforeMountonBeforeMount
挂载后mountedmountedonMounted
更新前beforeUpdatebeforeUpdateonBeforeUpdate
更新后updatedupdatedonUpdated
销毁前beforeDestroybeforeUnmountonBeforeUnmount
销毁后destroyedunmountedonUnmounted
调试钩子新增 renderTrackedrenderTriggeredonRenderTrackedonRenderTriggered

Vue3 的生命周期与 Vue2 的核心区别可概括为:​

  1. 钩子函数名称调整(如销毁阶段 beforeDestroy → beforeUnmount
  2. 引入 Composition API 的 setup 替代 beforeCreate/created,并新增调试钩子

相关文章:

  • 【一文读懂】RTSP与RTMP的异同点
  • 蓝桥杯备赛(基础语法3)
  • [蓝桥杯 2023 省 B] 飞机降落
  • Dubbo 深度解析
  • 【FLOYD+并查集】蓝桥杯算法提高 Degrees of Separation
  • CC45.【C++ Cont】STL中的哈希表及练习
  • 【Python 算法 1.线性枚举】
  • CSRF(跨站请求伪造)详解:原理、攻击方式与防御手段
  • Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装
  • 《C#上位机开发从门外到门内》3-4:基于TCP/IP的远程监控系统设计与实现
  • docker-compose install nginx(解决fastgpt跨区域)
  • 海外红人营销助力游戏出海:从单一营销到生态构建的转变
  • CSS块元素、行内元素、行内块元素详解
  • 【从零开始学习计算机科学】信息安全(十)安全协议
  • Mermaid 子图 + 拖拽缩放:让流程图支持无限细节展示
  • Qt6.8实现麦克风音频输入音频采集保存wav文件
  • Git——分布式版本控制工具使用教程
  • 嵌入式/C++笔试面试指南(前言)
  • MySQL原理:逻辑架构
  • 企业安全——密码学基础
  • 澎湃读报丨解放日报8个版聚焦:牢记嘱托,砥砺奋进
  • 全文丨中华人民共和国传染病防治法
  • 武汉楼市新政:二孩、三孩家庭购买新房可分别享受6万元、12万元购房补贴
  • “铁血防守”制造8年最快丢球,恐惧中的阿森纳什么也做不了
  • 住房和城乡建设部办公厅主任李晓龙已任部总工程师
  • 媒体:黑话烂梗包围小学生,“有话好好说”很难吗?