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

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

相关推荐
passerby60611 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了1 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅1 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼3 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
吹牛不交税3 小时前
admin.net-v2 框架使用笔记-netcore8.0/10.0版
vue.js·.netcore