前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库Vue 父子组件 生命周期 执行顺序 挂载
VuVue侦听与生命周期

Vue 父子组件挂载时,setup 与 mounted 的执行顺序是什么?

初始化从父级向下进入子树,完成通知则在子树就绪后向上返回。

前端进阶之旅 · 一题精讲更新于 2026.09.06
Vue#侦听与生命周期#异步编程
先看核心答案读代码示例
理解线索

把挂载看成一次递归调用

  1. 进入父级运行父 setup 与挂载前钩子,开始生成子树
  2. 完成子级子 setup、挂载前与挂载完成依次发生
  3. 返回父级同步子树完成后运行父 mounted

同级组件的具体顺序还受渲染树和条件影响,不应被用作兄弟间传递业务事件的隐式协议。

核心回答

先记住这个答案

普通同步父子组件首次挂载时,常见顺序是:父 setup、父 onBeforeMount、子 setup、子 onBeforeMount、子 onMounted、父 onMounted。可以理解为父级先开始创建并进入子树,子组件完成自身挂载后,父组件才满足已挂载条件。这个顺序需限定同步子树;异步组件、Suspense、条件分支和多个兄弟不能靠一张简化表推断所有完成时点。

  • setup 初始化由父向子进入
  • 同步子 mounted 先于父 mounted
  • 异步子树需要自己的完成信号

向下初始化、向上完成解释顺序

父组件必须先执行 setup 才能得到渲染函数或模板所需状态,随后创建子组件。父级自己的 mounted 需要等待同步子树已插入,因此子级完成钩子先被调用,再回到父级。

onBeforeMount 的位置也要以组件自身为参照:父级准备挂载后才开始真正处理子树,子级的 setup 因而位于父 beforeMount 之后。背诵列表之外,理解递归关系更容易推导嵌套三层。

用共享事件数组观察同步子树

下面的父子组件分别记录 setup、beforeMount 与 mounted。挂载 Parent 后,事件数组精确展示父开始、进入子级、子完成、父完成的过程,不需要真实浏览器 DOM。

测试只能证明受控同步组件的钩子顺序。若 Child 改为异步组件,父 mounted 不承诺等待其解析;产品需要等待异步内容时,应由异步边界提供显式 ready 状态。

记录父子首次挂载顺序TypeScript
import { h, onBeforeMount, onMounted } from 'vue'

const events: string[] = []
const Child = {
  setup() {
    events.push('child setup')
    onBeforeMount(() => events.push('child beforeMount'))
    onMounted(() => events.push('child mounted'))
    return () => h('span', 'child')
  }
}
const Parent = {
  setup() {
    events.push('parent setup')
    onBeforeMount(() => events.push('parent beforeMount'))
    onMounted(() => events.push('parent mounted'))
    return () => h(Child)
  }
}

挂载同步 Parent 后,记录依次为父 setup、父 beforeMount、子 setup、子 beforeMount、子 mounted、父 mounted。示例不声明异步子组件或浏览器绘制完成。

不要用顺序暗中耦合兄弟组件

如果兄弟乙必须等待兄弟甲在 mounted 中写入全局变量,代码依赖渲染遍历细节,条件渲染或重排后就可能改变。共享准备流程应上移到共同父级或显式服务,并通过状态与 Promise 表达完成。

父级需要使用子组件公开实例时,可以在 mounted 后访问同步子级模板引用,但仍要处理条件分支为空。需要子级数据就绪时则监听明确的 ready 或事件,不能把子 mounted 和异步业务完成混为一谈。

回答前,多想一步

容易答错的地方

回答成父 mounted 先于子 mounted
父级的挂载完成需要同步子树完成,因此完成钩子从子级返回父级。父级 setup 确实先运行,但不能把初始化进入顺序直接套到完成钩子。
把父 mounted 当成所有后代都已完成
异步组件和 Suspense 分支不在同步保证内,图片、请求和动画更有自己的时序。需要哪一种完成状态,就使用对应信号并覆盖失败或卸载情况。
试着用自己的话回答

面试官还会怎么问?

三层组件 mounted 顺序如何推导?

setup 和 beforeMount 沿父、子、孙逐层进入;完成挂载后从最深同步后代逐层返回,因此孙 mounted、子 mounted、父 mounted。仍需限定同步且实际渲染的分支。

更新阶段也是子 updated 先于父吗?

当同一次更新同时影响父子时,父级先进入更新,子级先完成,通常子 updated 在父 updated 之前。具体问题应观察谁的状态触发了谁,不要把首次挂载表无条件套到所有更新。

卸载时应该在哪层释放共享资源?

资源由谁创建和拥有,就由对应层或共享服务释放。父级可在自己的卸载流程结束整个子树,但多个组件共享的外部资源应有独立 owner,避免某个子级先离开就误关其他消费者。

从一道题,走向一组知识

把知识连起来

侦听与生命周期

Vue 组合式 API 生命周期钩子与选项式 API 如何对应?

先明确每个组合式钩子与选项式阶段的职责。

侦听与生命周期

Vue 的 nextTick 什么时候用,await 之后到底保证什么?

挂载后的状态变化若要操作新节点,需要等待对应更新刷新。

侦听与生命周期

Vue watch 默认 flush pre 在谁的 DOM 更新之前执行?

父级更新与所属组件 pre 回调的相对时机也以组件边界为参照。

参考资料

  • Vue:生命周期钩子
  • Vue:生命周期指南

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 向下初始化、向上完成解释顺序
  3. 用共享事件数组观察同步子树
  4. 不要用顺序暗中耦合兄弟组件
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑