news 2026/7/21 17:17:22

第42篇:Vue3生命周期全解——钩子函数实战、执行顺序、业务落地、面试必考

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第42篇:Vue3生命周期全解——钩子函数实战、执行顺序、业务落地、面试必考

前言

生命周期是Vue组件的运行全过程:组件从创建、挂载、更新、渲染、销毁的完整流程。

所有项目的接口请求、数据初始化、定时器创建、事件监听、资源销毁,全部依赖生命周期钩子实现。

90%新手开发BUG、性能问题,都是因为生命周期时机用错:提前请求导致数据为空、定时器不销毁造成内存泄漏、更新逻辑错乱等。

本篇系统性吃透Vue3全部生命周期钩子、执行顺序、业务场景、避坑要点,结合组合式API实战落地。

一、什么是生命周期(通俗定义)

生命周期:Vue组件从诞生到消亡的完整生命周期,框架内置的自动执行函数,不同阶段对应不同钩子

核心价值:让开发者可以在指定的阶段执行指定的代码,精准控制组件行为。

二、Vue3完整生命周期钩子(组合式API版)

Vue3组合式API抛弃了选项式的分散钩子,统一导入使用,执行顺序与选项式一致,适配现代开发。

import { onBeforeMount, onMounted, onBeforeUpdate, onUpdated, onBeforeUnmount, onUnmounted } from 'vue'

三、六大核心钩子+业务实战场景

1. onBeforeMount(挂载前)

组件DOM未生成、模板未渲染,无法操作DOM。适合做数据预处理、参数校验

2. onMounted(挂载完毕|最常用)

企业开发核心钩子:组件DOM渲染完成、页面结构生成完毕。

唯一合法业务场景:页面初始化接口请求、DOM操作、定时器创建、事件监听

onMounted(() => { // 页面加载完成后请求文章列表接口 getArticleList() // 初始化DOM操作 initDomEvent() })

3. onBeforeUpdate(更新前)

数据变化后、页面重新渲染前触发,可获取更新前的DOM状态。

4. onUpdated(更新完毕)

数据更新、页面DOM重新渲染完成后触发,适合更新后DOM二次操作

5. onBeforeUnmount(销毁前)

组件卸载前触发,组件DOM还存在,适合清理资源前置操作

6. onUnmounted(销毁完毕|性能优化核心)

组件彻底销毁、DOM移除,核心用途:清除定时器、移除事件监听、终止请求,杜绝内存泄漏。

let timer = null onMounted(() => { timer = setInterval(() => { console.log("定时任务") }, 1000) }) // 页面销毁清除定时器,完美解决内存泄漏 onUnmounted(() => { clearInterval(timer) timer = null })

四、生命周期完整执行顺序(必背)

创建阶段:setup 执行 → onBeforeMount → onMounted

更新阶段:数据变更 → onBeforeUpdate → onUpdated

销毁阶段:组件卸载 → onBeforeUnmount → onUnmounted

五、新手高频避坑指南(实战干货)

  • 禁止在setup顶层操作DOM:此时DOM未挂载,获取不到节点

  • 所有接口请求统一放onMounted:保证页面渲染完成后再请求数据

  • 所有定时器/监听必须在onUnmounted销毁:杜绝内存泄漏

  • 不要在onUpdated频繁修改数据:容易造成无限更新死循环

六、面试高频问答(满分话术)

1. 页面初始化请求放在哪个生命周期?为什么?

放在onMounted,此时组件DOM挂载完成,页面结构就绪,可正常渲染请求数据,同时避免挂载前数据为空、DOM获取失败的问题。

2. 如何避免Vue组件内存泄漏?

在组件销毁钩子onUnmounted中,手动清除定时器、移除全局事件监听、终止未完成的异步请求,释放页面占用资源。

3. onMounted和onUpdated区别?

onMounted仅页面首次挂载完成执行一次;onUpdated每次数据更新、DOM重渲染后都会重复执行。

七、本篇结语

生命周期是Vue组件运行的底层调度核心,也是区分新手和熟练开发者的关键能力。

学完本篇,你可以精准把控组件每一个运行阶段,规范处理接口请求、资源创建与销毁、DOM操作,彻底杜绝项目常见BUG和内存泄漏问题。

至此,Vue3基础核心体系全部学完:模板语法、组件化、组合式API、响应式原理、生命周期,完全具备企业基础项目开发能力。

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

rafx材质系统完全指南:创建PBR效果的简单步骤

rafx材质系统完全指南:创建PBR效果的简单步骤 【免费下载链接】rafx Multi-backend renderer with asset pipeline. The objective of this repo is to build a scalable, flexible, data driven renderer. 项目地址: https://gitcode.com/gh_mirrors/ra/rafx …

作者头像 李华
网站建设 2026/7/21 17:16:11

JDK 21新特性解析:字符串模板与分代ZGC实践指南

1. JDK 21的定位与价值JDK 21作为Oracle在2023年9月发布的长期支持版本(LTS),标志着Java生态系统的又一次重要演进。这是继JDK 8、11、17之后的第四个LTS版本,意味着它将获得至少5年的官方支持周期。对于企业级应用开发而言&#…

作者头像 李华
网站建设 2026/7/21 17:11:50

react学习与使用

1.useState用法 1.1.基本数据类型 //实时获取值 const [count, setCount] useState(0); useEffect(() > {console.log(count); }, [count]); const handleClick () > {setCount(count > count 1) }1.2.引用数据类型 //useState返回一个数组,数组里有两项 const [my…

作者头像 李华
网站建设 2026/7/21 17:11:14

国内OpenClaw官网品牌有哪些?四款主流平台选型对比

据公开数据显示,2025年国内AI智能体市场规模已突破百亿,超过六成的企业技术团队正在评估或已引入AI Agent工具。基于OpenClaw开源框架的智能体管理平台因其灵活性和可扩展性,成为这一赛道中关注度较高的方向。然而,面对市面上多个…

作者头像 李华
网站建设 2026/7/21 17:10:43

load负载算法原理分析

本文将从内核中负载的计算过程进行深入分析,并简单分析load高时的排查思路。 1.负载的查看过程 我们一般会使用top命令查看Linux系统的负载情况,典型的top命令输出的负载如下: #top load average: 0.18, 0.21, 0.18 输出中的Load Avg就是…

作者头像 李华