Vue生命周期小剧场:mounted和created到底谁先出场?

大家好,我是小杨,一个写了6年前端的老油条。今天咱们来聊聊Vue中经常被问到的生命周期钩子------createdmounted。这两个钩子看似简单,但新手很容易搞混。别担心,我会用最接地气的方式给大家讲明白!

先来个生活小例子

想象你在装修房子:

  • created阶段:就像房子刚建好框架,水电图纸都画好了,但还没开始装修
  • mounted阶段:就像家具都搬进去了,随时可以入住

正经技术解释

1. created:婴儿刚出生

javascript 复制代码
export default {
  created() {
    // 这里可以访问data里的数据
    console.log('组件诞生了!但还没见到DOM');
    this.fetchData(); // 通常我在这里发起异步请求
    
    // 举个栗子
    this.userList = ['张三', '李四'];
    console.log(this.userList); // 正常输出
  }
}

特点:

  • 组件"出生证"刚办好
  • 可以访问data、methods
  • 但DOM还没生成,所以别在这里操作DOM!
  • 适合做:初始化数据、发起API请求

2. mounted:装修完工

javascript 复制代码
export default {
  mounted() {
    // 这里可以操作DOM了
    console.log('组件已经挂载到页面上了');
    this.$refs.myButton.addEventListener('click', this.handleClick);
    
    // 举个栗子
    const myElement = document.getElementById('myDiv');
    console.log(myElement); // 现在能拿到了
  }
}

特点:

  • 组件已经"安家落户"
  • 可以操作DOM
  • 适合做:操作DOM、初始化第三方库(比如图表库)
  • 注意:这里发请求可能会比created慢一丢丢

超直观对比表

特性 created mounted
DOM准备好了吗 ❌ 还没出生 ✅ 已经安家
能操作DOM吗 ❌ 会报错 ✅ 随便玩
常用用途 初始化数据 操作DOM
异步请求 推荐在这里 也可以但不推荐

真实项目踩坑记

记得我刚学Vue时做过一个傻事:

javascript 复制代码
created() {
  // 我想在这里获取DOM元素...
  const el = document.querySelector('.my-class'); // 结果是null!
  console.log(el); // 输出null,当场懵逼
}

后来才明白,created阶段DOM根本不存在!这种操作必须放到mounted里。

什么时候用哪个?

用created:

  • 需要尽早获取数据
  • 需要初始化组件状态
  • 不需要操作DOM的计算

用mounted:

  • 需要操作DOM元素
  • 需要集成第三方库(比如初始化ECharts)
  • 需要获取元素尺寸/位置

性能小贴士

如果组件不需要操作DOM,优先用created发起请求,这样能更早获取数据。我曾经优化过一个列表页,把请求从mounted移到created,加载速度快了200-300ms!

总结

记住这个顺口溜:

"created生,mounted挂,

操作DOM要等挂,

数据初始化早出发,

性能优化顶呱呱!"

⭐ 写在最后

请大家不吝赐教,在下方评论或者私信我,十分感谢🙏🙏🙏.

✅ 认为我某个部分的设计过于繁琐,有更加简单或者更高逼格的封装方式

✅ 认为我部分代码过于老旧,可以提供新的API或最新语法

✅ 对于文章中部分内容不理解

✅ 解答我文章中一些疑问

✅ 认为某些交互,功能需要优化,发现BUG

✅ 想要添加新功能,对于整体的设计,外观有更好的建议

✅ 一起探讨技术加qq交流群:906392632

最后感谢各位的耐心观看,既然都到这了,点个 👍赞再走吧!

相关推荐
QQ1__8115175152 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态2 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子2 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室2 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI2 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing2 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者2 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册2 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李2 小时前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢2 小时前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web