news 2026/6/10 17:09:51

深入理解 Vue 生命周期:created 与 mounted 的核心差异与实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入理解 Vue 生命周期:created 与 mounted 的核心差异与实战指南

深入理解 Vue 生命周期:created 与 mounted 的核心差异与实战指南

createdmounted是 Vue 中最常用、也最容易混淆的两个生命周期钩子。很多人会问:“我到底应该把接口请求、DOM 操作、初始化逻辑放在哪里?”

下面从原理、执行时机、可用性、实战场景四个维度给你彻底讲透。

1. 核心对比表(强烈建议背下来)

维度createdmounted
执行时机实例创建完成后,DOM 未生成实例挂载到 DOM 后,DOM 已真实渲染
能否访问 DOM不能e l 为 u n d e f i n e d , el 为 undefined,elundefinedrefs 为空)可以e l 、 el、elrefs、document.querySelector 均可用)
数据响应式已完成(data、props、computed、watch 均可用)已完成
子组件状态子组件还未创建子组件已完成 mounted
典型用途数据初始化、接口请求、事件总线监听DOM 操作、第三方库初始化、获取元素尺寸
是否可多次触发首次创建时触发一次首次创建时触发一次(keep-alive 组件切换时不触发)
Vue 3 Composition API 对应setup()(最早期)onMounted()

一句话总结

  • created= “数据准备阶段”(逻辑层面)
  • mounted= “DOM 就绪阶段”(视觉层面)

2. 执行顺序全景图(父子组件 + keep-alive)

父组件 created ↓ 子组件 created ↓ 子组件 mounted ↓ 父组件 mounted
  • keep-alive组件:首次走created → mounted,之后切换只会触发activated / deactivated,不会再走 created/mounted。
  • 异步组件(Suspense):子组件可能在父 mounted 之后才 mounted。

3. 代码示例对比

Options API 写法
<script> export default { data() { return { list: [] } }, async created() { // 推荐在这里发请求:数据准备好后立即渲染 const res = await fetch('/api/list') this.list = res.data }, mounted() { // 这里才能安全操作 DOM this.$refs.chart && this.initEcharts() // 或 document.getElementById('box').style.height = '500px' } } </script>
Vue 3 Composition API 写法(推荐)
<script setup> import { ref, onMounted } from 'vue' const list = ref([]) const chartRef = ref(null) // created 对应:setup() 本身就是最早阶段 const fetchData = async () => { const res = await fetch('/api/list') list.value = res.data } fetchData() // 直接在 setup 中执行 // mounted 对应:onMounted onMounted(() => { if (chartRef.value) { initEcharts(chartRef.value) } }) </script>

4. 实战指南:什么时候用哪个?

推荐在created中做的(优先级最高):
  • 接口请求(最经典)
  • 初始化组件内部状态
  • 事件总线监听($bus.on)
  • 根据 props 计算初始值
  • 设置定时器(但注意在 beforeUnmount 清除)
必须在mounted中做的:
  • 任何 DOM 操作(获取 offsetWidth、scrollHeight 等)
  • 初始化第三方库:
    • ECharts / Chart.js
    • Swiper、BetterScroll
    • 地图(高德、百度、Leaflet)
    • 富文本编辑器(TinyMCE、WangEditor)
    • 视频播放器(DPlayer、Video.js)
  • 需要依赖真实 DOM 尺寸的动画、Canvas 初始化
  • this.$nextTick()仍然常用,但 mounted 之后已经不需要了

5. 常见错误与坑

错误1:在 created 中操作 DOM

created(){this.$refs.box.style.color='red'// 无效!$refs 为空}

错误2:把所有请求都放在 mounted

  • 结果:白屏时间变长(数据请求晚了)
  • 正确做法:created 发请求 + mounted 处理 DOM

错误3:在 mounted 中忘记清理副作用

mounted(){this.timer=setInterval(...)// 必须在 beforeUnmount 中 clearInterval}

错误4:依赖子组件 DOM

  • 父组件 mounted 时,子组件已 mounted,但如果子组件是异步的(Suspense、动态组件),仍可能拿不到。

6. 最佳实践(2026 年现代 Vue 项目)

  1. 数据获取统一放在 created / setup()(更快渲染)
  2. DOM 操作统一放在 onMounted / mounted
  3. 复杂初始化逻辑抽成 composable
    // useEcharts.jsexportfunctionuseEcharts(){constchartRef=ref(null)onMounted(()=>{...})return{chartRef}}
  4. 结合 VueUseuseMountedonClickOutside等工具函数已帮你处理好时机
  5. SSR 项目created在服务端也会执行,mounted仅客户端执行(注意区分)

总结口诀

  • created:数据就绪 → 适合发请求、初始化状态
  • mounted:DOM 就绪 → 适合操作真实元素、初始化可视化库
  • 核心差异:一个在“逻辑层”,一个在“渲染层”

掌握了这两个钩子的区别,你就真正理解了 Vue “数据驱动视图”的本质。

想继续深入哪个部分?

  • Vue 3 setup() + 生命周期的完整对应关系
  • keep-alive 下的生命周期行为
  • 与 React useEffect 的对比
  • 父子组件生命周期执行顺序的复杂场景

随时告诉我,我可以继续展开!

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

完整演示 Git Flow 所有分支的创建与流转过程的 实操命令示例

✅ 假设项目刚初始化&#xff0c;只有 main 分支 ✅ 所有操作基于命令行 ✅ 模拟一个完整周期&#xff1a;开发 → 发布 → 热修复&#x1f680; 第 0 步&#xff1a;初始化项目&#xff08;仅有 main&#xff09; # 创建项目目录 mkdir my-project && cd my-project# …

作者头像 李华
网站建设 2026/6/10 8:16:17

适老化移动应用界面易用性测试体系构建与实施策略

一、适老化测试的时代背景与核心挑战 人口结构变革的紧迫需求 我国60岁以上人口占比已达18.7%&#xff08;2.64亿&#xff09;&#xff0c;老年群体数字需求激增与界面使用障碍的矛盾日益凸显。测试人员需直面三大核心挑战&#xff1a;视觉感知衰退导致的界面元素识别困难&…

作者头像 李华
网站建设 2026/6/10 8:14:33

期刊让我投“预印本”,我投还是不投?投它有啥用?

在学术研究的道路上&#xff0c;科研工作者们常常会面临各种选择&#xff0c;其中之一就是当收到期刊让投“预印本”的邀请时&#xff0c;该何去何从。预印本近年来在学术领域逐渐崭露头角&#xff0c;但其对于许多研究者来说&#xff0c;仍然笼罩着一层神秘面纱。那么&#xf…

作者头像 李华
网站建设 2026/6/10 12:29:03

被椰树独宠了十几年的长公主徐冬冬大婚!60亿票房作品成亮眼陪嫁

在这个万物皆可营销的时代&#xff0c;一场婚礼能玩出多少花样&#xff1f;想知道答案就来看看徐冬冬和尹子维的“椰树牌”婚礼。当印有“新婚幸福&#xff0c;早生龙凤”的椰汁罐铺满货架&#xff0c;当“椰历38年&#xff0c;椰树公主大婚”的梗刷屏全网&#xff0c;人们才惊…

作者头像 李华
网站建设 2026/6/10 8:14:45

打破传输瓶颈:替代国外FTP的工具有哪些新选择

信创战略深化落地&#xff0c;数据安全合规要求愈发严苛&#xff0c;国外 FTP 工具的安全漏洞、信创适配缺失等短板愈发凸显&#xff0c;已难以匹配企业数字化转型的传输需求。越来越多企业开始探寻国产化替代方案&#xff0c;替代国外 FTP 的工具有哪些&#xff1f;成为政企搭…

作者头像 李华