vue 生命周期详解 (附代码)

article/2025/9/1 14:41:19

一、 vue的生命周期是什么

vue每个组件都是独立的,都有自己的生命周期,从一个组件创建数据初始化挂载更新销毁,就是一个组件的生命周期。

一个组件首次加载时,也就只执行 创建、数据初始化到挂载。

生命周期给了用户在不同阶段添加自己的代码的机会

二、一个组件生命周期的全过程

首先得 new Vue() 实例化一个vue实例。

这时会执行初始化函数 :初始化生命周期函数 initLifecycle()、初始化事件 initEvent()、定义createElement函数 initRender()。

1. 执行 beforeCreated()

beforeCreated执行后,开始定义data数据、方法和事件,并完成数据劫持observe以及给组件实例配置watcher观察者实例。 这样当数据发生变化以后,才能感知数据的变化,完成页面的渲染。

2. 执行 created() ,此时已经可以拿到data和method下的方法 ,但是页面还没渲染出来

created执行后,如果没有实例对象el,会等待调用$mount(el),调用后$mount(el)后判断是否有template,如果有实例对象el,也会判断是否有template参数,拿到后template会转成render函数

3.执行 beforeMount()

beforeMount执行后,首先会产生一个虚拟dom,当render函数被渲染时就会产生真实的dom。真实的dom会替换掉原有的编译模板template,生成一个真正可用的HTML

4. 执行 mounted()  生命周期属性 _isMounted被置为true。另外我们是可以操作dom的,因为dom这时候已经渲染完成了

ok 到这了如果数据不变化的话,其实不用也不会执行beforeUpdate 和 update

5. 执行 beforeUpdate() 会重新生成一个新的虚拟dom,然后最拿这个最新的虚拟dom和原来的虚拟dom进行diff运算,从而更新render函数的最新数据,再将更新后的render重新渲染成真实dom,也就是数据更新

6. 执行 updated() ,这里可操作dom,并拿到最新一次更新的dom

ok 如果说vm.$destory()不被调用其实 beforeDestory 和 destory不用也不会执行

7. 执行 beforeDestory()  此时还能操作dom

beforeDestory执行后,会做一系列销毁,接触各种数据引用,移除事件监听,删除组件_watcher,删除子实例,删除自身self,同时将_isDestroyed设置为true

8. 执行 destory()  销毁已完成

ps:执行mounted和updated,不需要等所有的子组件都挂载完成,如果希望所有的视图都更新完后在做点什么事的话,最好在mounted和updated中加个$nextTick()。要做的事放在$nextTick()里

代码演示:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
</head><body><div id="app"><p>{{ message }}</p><button @click="changeMessage">改变Message</button></div>
</body>
<script>var app = new Vue({el: "#app",data: {message: "Hello Vue!"},methods: {changeMessage() {this.message = 'goodbye world'}},beforeCreate() {console.log("~~~~~~ 初始化前 ~~~~~~");console.log(this.message);console.log(this.$el);},created() {console.log("~~~~~~ 初始化完成 ~~~~~~");console.log(this.message);console.log(this.$el);},beforeMount() {console.log("~~~~~~ 挂载前 ~~~~~~");console.log(this.message);console.log(this.$el);},mounted() {console.log("~~~~~~ 挂载完成 ~~~~~~");console.log(this.message);console.log(this.$el);},beforeUpdate() {console.log("~~~~~~ 更新前 ~~~~~~");console.log(this.message);console.log(this.$el);},updated() {console.log("~~~~~~ 更新完成 ~~~~~~");console.log(this.message);console.log(this.$el);}});
</script></html>

控制台打印截图(可以暂时注释methods 代码,即能看到截图效果)

可以看到,首次加载,只经历了创建前后、挂载前后 4个生命周期。

另外挂载前我们看到的el 其实还是模板template 到挂载完成就渲染成真实的dom并替换了原来的模板。

 

参考学习:

超详细vue生命周期解析(详解)_ら陈佚晨的博客-CSDN博客_vue生命周期

     谈谈vue生命周期-看了这篇你就懂了 - 简书


http://chatgpt.dhexx.cn/article/qKI5UlOa.shtml

相关文章

详解vue生命周期(常问面试题)

面试常问&#xff1a;1、vue生命周期是什么&#xff1f; Vue 实例从创建到销毁的过程为生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程&#xff0c;称之为 Vue 的生命周期。 2、vue生命周期的作用是什么&#xff1f; 在控制整个…

Vue学习 — 详解Vue生命周期

目录 一、前言二、生命周期1、beforeCreat / created(1)、beforeCreat&#xff1a;&#xff08;2&#xff09;、created&#xff1a; 2、eforeMount / mounted&#xff08;1&#xff09;、beforeMount&#xff1a;&#xff08;2&#xff09;、mounted&#xff1a; 3、beforeUpd…

Vue生命周期详解学习笔记

生命周期 生命周期又名生命周期回调函数&#xff0c;生命周期函数&#xff0c;生命周期钩子。生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数。生命周期函数的名字不可更改&#xff0c;但函数的具体内容是程序员根据需求编写的。生命周期中的this指向vm或组件实例对象…

Vue的生命周期详解,一文带你弄懂Vue的生命周期

大家好&#xff0c;我是Ned&#x1f440;&#xff0c;一个刚刚入门前端未满两年的大三小学生&#x1f339; 未来路还长&#x1f389;, 一起努力加油吧❤~ 前言 我记得尤大曾经说过&#xff0c;你看Vue源码干嘛&#xff1f;你使用Vue又不需要它的源码&#xff0c;你只需要会用就…

Vue系列之vue生命周期详解

文章の目录 1、什么是 vue 生命周期2、生命周期钩子函数2.1、beforeCreate&#xff08;创建前&#xff09;2.2、created&#xff08;创建后&#xff09;2.3、beforeMount&#xff08;挂载前&#xff09;2.4、mounted&#xff08;挂载后&#xff09;2.5、beforeUpdate&#xff0…

Vue的生命周期详解(简单易懂)

一、定义 Vue的生命周期就是实例从创建到销毁的一个过程&#xff0c;即从创建、初始化数据、编译模板、挂载Dom->渲染、更新->渲染&#xff0c;卸载等一系列的过程。 写代码时注意&#xff1a; Vue的生命周期钩子函数会自动绑定this上下文到实例中&#xff0c;这意味着…

【Vue】 Vue生命周期详解

每一个vue实例从创建到销毁的过程&#xff0c;就是这个vue实例的生命周期。在这个过程中&#xff0c;它经历了从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程。 通过这张流程图已经可以清晰的看到Vue整个生命周期的过程 beforeCreate( 创建前…

Vue极简教程,生命周期详解

Vue | 渐进式 | JS框架 | 极简教程 生命周期详解

vue实例的生命周期详解

Vue实例的生命周期 简介 此篇文章说的是最简单的单个VUE组件的生命周期。 官网中的长图诠释了Vue实例从创建&#xff0c;运行到销毁的整个过程。从vue实例的创建&#xff0c;运行&#xff0c;销毁期间&#xff0c;总是伴随着各种各样的事件&#xff0c;这些事件统称为生命周期…

【Vue生命周期详解】

细谈Vue声明周期 什么是生命周期&#xff1f;Vue的生命周期beforeCreate( 创建前 )&#xff1a;created ( 创建后 &#xff09;&#xff1a;beforeMount&#xff1a;mounted&#xff1a;beforeUpdate&#xff1a;updated&#xff1a;beforeDestroy&#xff1a;destroyed&#x…

VUE的十一个生命周期详解

生命周期可以分为三个阶段&#xff1a; 挂载阶段 更新阶段 销毁阶段 创建前&#xff1a;beforeCreate() 无法获取data数据 创建后&#xff1a;created() 可以获取data数据和操作methods 但不能使用DOM 挂载前&#xff1a;beforeMount() 挂载后&#xff1a;mounted() …

Vue生命周期和钩子函数详解

Vue生命周期和钩子函数详解 Vue生命周期介绍&#xff1a; 组件每个阶段它的内部构造是不一样的&#xff0c;所以一般特定的钩子做特定的事&#xff0c;比如Ajax获取数据就可以在mounted阶段。从Vue实例被创建开始到该实例最终被销毁的整个过程叫做VUE的生命周期&#xff0c;在…

vue生命周期详解(一)----创建期间的生命周期函数

文章目录 vue生命周期一、beforeCreate1.在beforeCreate函数里面调用data里面的属性2.在beforeCreate钩子函数里面调用methods里面的方法 二、created生命周期钩子函数1.在created钩子函数里面调用methods里面的方法和data里面的属性 三、beforeMount和mountedbeforeMount生命周…

Vue中组件生命周期过程详解

一、什么是生命周期&#xff1f; Vue中的生命周期是指&#xff1a;组件从创建到销毁的一个过程&#xff0c;在这过程中&#xff0c;我们在每个特定阶段会触发一些方法&#xff08;这些方法具备一些功能&#xff09;&#xff0c;我们给这些方法起了名字叫做(生命周期钩子函数/组…

vue生命周期详解和使用场景整理

我们从vue的原理上来理解一下vue的生命周期&#xff0c;以及使用场景&#xff08;使用场景应该试很多新手同学比较懵的地方&#xff09;&#xff0c;建议有条件的同学可以看一下vue源码&#xff0c;更能深入理解。 不看源码的同学也没有关系&#xff0c;我们从业务场景切入&…

vue生命周期钩子函数详解

先放一张官网生命周期图&#xff1a; vue有8种生命周期函数&#xff1a; 钩子函数触发的行为在此阶段可以做的事情beforeCreadtedvue实例的挂载元素$el和数据对象data都为undefined&#xff0c;还未初始化。加loading事件createdvue实例的数据对象data有了&#xff0c;$el还…

Vue的生命周期详解

Vue的生命周期 Vue的生命周期就是vue实例从创建到销毁的全过程&#xff0c;也就是 new Vue() 开始就是vue生命周期的开始。Vue实例有一个完整的生命周期&#xff0c;也就是从开始创建、初始化数据、编译模板、挂载Dom-->渲染、更新-->渲染、卸载 等一系列过程&#xff0…

Vue的生命周期函数详解

Vue有一个完整的生命周期&#xff0c;也就是从开始创建&#xff0c;初始化创建&#xff0c;编译模板&#xff0c;挂载Dom&#xff0c;渲染–>更新–>渲染&#xff0c;销毁等一系列过程&#xff0c;我们称之为Vue的生命周期。通俗的说就是Vue实例从创建到销毁的过程&#…

vue 生命周期 详解

详解Vue Lifecycle 先来看看vue官网对vue生命周期的介绍 Vue实例有一个完整的生命周期&#xff0c;也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、销毁等一系列过程&#xff0c;我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程&#xff…

【vue2】vue生命周期的理解

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;vue生命周期的介绍、vue生命周期钩子函数详解&#xff0c;vue生命周期的执行顺序 目录 …