news 2026/5/29 19:00:05

请描述下你对 Vue 生命周期的理解?在 `created` 和 `mounted` 中请求数据有什么区别?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
请描述下你对 Vue 生命周期的理解?在 `created` 和 `mounted` 中请求数据有什么区别?


一、什么是 Vue 生命周期?

Vue 生命周期指的是一个组件实例从创建到销毁的全过程。在这个过程中,Vue 会自动执行一系列初始化操作(如数据观测、模板编译、DOM 挂载等),并在特定阶段触发生命周期钩子函数,允许开发者在这些时机插入自定义逻辑。

就像一条流水线:每个“工人”(钩子)在任务流经自己岗位时执行特定工作。

⚠️ 注意:所有生命周期钩子的this都自动绑定到当前 Vue 实例,因此不能使用箭头函数(否则this会指向外层作用域)。


二、Vue 的 8 个核心生命周期钩子

钩子触发时机典型用途
beforeCreate实例刚被创建,datamethods等尚未初始化插件开发中做极早期初始化
created实例已完成数据观测、属性/方法初始化,但 DOM 未生成发起异步请求、初始化非 DOM 相关逻辑
beforeMount模板已编译为 render 函数,虚拟 DOM 已创建,真实 DOM 未挂载可访问$el(原始挂载点),但内容未替换
mounted真实 DOM 已挂载并渲染完成操作 DOM、初始化第三方库(如 echarts)、获取元素尺寸
beforeUpdate数据变化后,虚拟 DOM 重新渲染前获取更新前的状态
updated虚拟 DOM 重新渲染并真实 DOM 更新后执行依赖 DOM 更新后的操作(慎用,避免无限循环)
beforeDestroy实例销毁前,仍可访问所有属性和方法清理定时器、取消订阅、解绑事件
destroyed实例完全销毁,仅保留 DOM 节点(不会自动移除)彻底释放资源

📌 补充(带keep-alive时):

  • activated:缓存组件被激活时调用
  • deactivated:缓存组件被停用时调用

三、createdvsmounted:请求数据的区别

这是面试高频考点!核心区别在于DOM 是否就绪

✅ 相同点:

  • 都能访问thisdatamethodscomputed等;
  • 都可以发起 AJAX 请求获取数据。

❗ 关键区别:

维度createdmounted
触发时机实例创建完成,早于 DOM 渲染DOM 已挂载并渲染完成
能否操作 DOM❌ 不能($el为原始挂载点或 undefined)✅ 可以($el是最终渲染的 DOM)
用户体验数据在页面渲染前加载,无闪动若数据较慢,可能先看到空白/默认 UI,再更新 →可能出现“闪屏”
适用场景推荐用于大多数数据请求(尤其不影响 DOM 结构的数据)适用于必须等 DOM 存在才能发起的请求(极少见),或需结合 DOM 尺寸计算的场景

🎯 最佳实践建议:

  • 优先在created中请求数据
    因为它更早执行,能让数据在页面渲染前就位,避免用户看到“加载中”或空白状态。
  • 除非你需要 DOM 信息(比如根据容器宽高请求不同尺寸的图片),否则不要等到mounted再发请求。

💡 举例:
如果你在mounted中请求用户信息,而模板中有{{ userInfo.name }},那么页面会先显示空值(或默认值),等请求回来才更新——这就是“闪动”。
而在created中请求,配合v-if="userInfo",就能实现“数据准备好才渲染”,体验更流畅。


四、总结

  • Vue 生命周期是理解组件行为的核心,每个钩子都有其明确职责;
  • created数据准备的最佳时机mountedDOM 操作的安全时机
  • 数据请求应尽量前置到created,以提升首屏体验,避免不必要的 UI 闪烁。

这也是为什么 Vue 官方文档和社区普遍推荐:“能用 created,就不用 mounted 发请求”


参考文献

  • 掘金:Vue 生命周期详解
  • Vue.js 官方文档
  • 百度百科:生命周期概念


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 15:48:36

语雀文档批量导出神器:轻松实现完整内容迁移

语雀文档批量导出神器:轻松实现完整内容迁移 【免费下载链接】yuque-exporter 项目地址: https://gitcode.com/gh_mirrors/yuqu/yuque-exporter 还在为语雀文档迁移而烦恼吗?这款强大的语雀文档导出工具能够帮你快速完成批量迁移,将珍…

作者头像 李华
网站建设 2026/5/29 18:05:22

基于SpringBoot高校迎新管理系统(毕设源码+文档)

课题说明本课题聚焦高校迎新工作流程繁琐、信息传递不及时及数据统计低效等痛点,设计并实现基于SpringBoot的高校迎新管理系统。系统依托SpringBoot框架的高效稳定与易拓展优势,整合新生信息管理、报到流程管控、资源调度协调等核心场景,涵盖…

作者头像 李华
网站建设 2026/5/20 21:57:10

SGrid 创建和可视化一个带有矢量数据(Vector Data)的 3D 结构化网格

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkHedgeHog将数据关联到网格上的顶点 二…

作者头像 李华
网站建设 2026/5/29 7:04:17

9个降AI率工具推荐!专科生高效避坑指南

9个降AI率工具推荐!专科生高效避坑指南 AI降重工具,让论文更“自然” 在当今学术写作中,越来越多的专科生开始使用AI工具辅助完成论文写作。然而,随之而来的AIGC率过高、AI痕迹明显等问题也成为了困扰学生们的难题。如何在保证内容…

作者头像 李华
网站建设 2026/5/22 14:07:19

YOLOv8改进 - 注意力机制 | SEAM (Spatially Enhanced Attention Module) 空间增强注意力模块提升遮挡目标特征学习能力

前言 本文提出基于单阶段检测器YOLOv5的实时人脸检测器YOLO - FaceV2,并将SEAM模块集成到YOLOv8中。传统人脸检测算法在精度、速度及处理遮挡等问题上存在不足。SEAM模块采用多头注意力机制,通过深度可分离卷积、1x1卷积、全连接网络学习面部特征&#…

作者头像 李华
网站建设 2026/5/20 20:04:19

python+vue网上选课推荐系统vue前台的设计与实现_w2l3j

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 pythonvue网上选课推荐系统vue前台的设计与实现_w2l3j …

作者头像 李华