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

Vue2 生命周期钩子详解:beforeCreate、created、mounted、beforeDestroy 用法顺序与坑点指南

1. 创建阶段(Create)

1.1. beforeCreate(创建前)

此时 Vue 刚被 new 出来,但是内部的数据监听(data)和事件系统(events)都还没有被初始化

不能访问 datacomputedmethods,因为它们还不存在,访问会得到 undefined

做一些与实例本身无关的事情,比如添加一个全局的事件监听,或者在Vue实例上挂载一些不需要响应式的数据。但这个钩子用得非常少。(做一些插件初始化、原始数据准备)

1.2. create(创建后)

Vue 实例已经完成了数据监听 data、计算属性 computed、方法 methods、侦听器 watch 的初始化。但是 DOM 还没有挂载

不能操作 DOM,因为此时还没有真实的 DOM 元素被挂载到页面上。如果访问 document.getElementById(...),会得到 null

能访问并且修改 datacomputedmethodswatch,并且是响应式的。

2. 挂载阶段(Mounting)

2.1. beforMount(挂载前)

Vue 已经根据模板(template)在内存中创建好了虚拟DOM(Virtual DOM),但还没有把它转换成真实的DOM并挂载到页面上。

不能操作 DOM,真实 DOM 还未渲染,el 所指向的DOM元素(比如 <div id="app"></div>)还是一个空的“壳子”。

能访问并且修改 datacomputedmethodswatch,并且是响应式的。

2.2. mounted(挂载后)

Vue 已经将内存的虚拟 DOM 渲染成了真实 DOM,并替换了 el 选项所指向的元素。组件已经完全显示在页面上了

可以操作 DOM,可以使用 document.getElementById,或者通过 this.$refs 访问子组件或DOM元素。可以初始化第三方库,比如 ECharts、Sortable.js 等,因为它们都需要一个已存在的DOM容器。可以发起需要依赖DOM的异步请求。

注意:虽然 mounted 保证了 DOM 已经存在,但不保证DOM的所有子组件都已挂载完成。如果你需要确保所有子组件也都准备好了,应该使用 this.$nextTick()

3. 更新阶段

3.1. beforeUpdate(更新前)

当组件 data 发生改变时,这个钩子会被触发,此时数据已经是最新的了,但屏幕上的 DOM 还是旧的

可以获取更新前的 DOM 状态。

不可以在这里修改数据,否则会触发无限循环更新!

3.2. updated(更新后)

Vue 已经根据最新的数据完成了虚拟 DOM 的重新渲染和打补丁(patch),屏幕上的 DOM 也已经是最新的状态了

可以操作更新后的 DOM。

beforeUpdate 一样,绝对不要在这里修改数据,否则会导致无限循环。如果需要根据 DOM 状态的变化来修改数据,应该使用 `watch` 或 computed

4. 销毁阶段

4.1. beforeDestory(销毁前)

Vue 的实例仍然可以使用。

可以访问 DOM、data、computed、methods。

常用来做 清理操作(比如 clearInterval、移除事件监听)。

4.2. destoryed(销毁后)

Vue 实例完全被销毁。它与 DOM 的绑定被解除,所有的事件监听被移除,所有的子实例也被销毁。

依然能访问 data、methods(只是不会再触发响应式更新)

真实 DOM 已经被移除不能再操作 DOM

http://www.dtcms.com/a/389078.html

相关文章:

  • electron nodejs安装electron 以及解压打包
  • 每日一题:链表排序(归并排序实现)
  • 团体程序设计天梯赛-练习集 L1-032 Left-pad
  • AI的出现,能否代替IT从业者
  • 一个基于Java+Vue开发的灵活用工系统:技术实现与架构解析
  • 原神望陇村遗迹 解谜
  • 半导体制造常提到的Fan-in晶圆级封装是什么?
  • MySQL 专题(五):日志体系(Redo Log、Undo Log、Binlog)原理与应用
  • 锂电池取代铅酸电池作为及其老化率计算常用算法
  • FreeRtos面试问题合集
  • Codeforces Round 1051 Div.2 补题
  • tokenizer截断丢失信息,如何处理?
  • Mybatis学习笔记03-XML映射配置
  • 时空预测论文分享:模仿式生成 动态局部化 解耦混淆因子表征 零样本/少样本迁移
  • 更新!Windows 11 25H2 四合一版【版本号:26200.5074】
  • CentOS 7.9 离线部署 KVM + WebVirtMgr,通过WebVirtMgr创建虚拟机教程
  • Python实现在模型上进行点云(下)采样
  • Vue 原理三大子系统:编译时、响应式与运行时
  • 黑马SpringCloud02
  • Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的问题解决方案
  • Kafka 硬件与操作系统选型与调优实战
  • ActiveMQ面试
  • ActiveMQ 系统知识全解析
  • 智慧园区:科技赋能城市单元,重塑未来运营新生态
  • 2025年9月17日学习笔记——模式识别与机器学习第11章——非监督学习与聚类
  • arcgispro基于森林的分类与回归 (空间统计)
  • npm run serve 和 npm run dev的区别
  • 2025 局域网内多台服务器时间统一,最稳定且无需联网的方案是部署 NTP 离线服务器部署chrony 轻量且兼容性强,支持纯离线环境
  • 机器学习如何改变AI?
  • rook-ceph的dashboard配置覆盖与生效