Vue学习之Vue的生命周期详细解释
创始人
2025-05-31 18:03:59

Vue学习之Vue的生命周期详细解释

  • 概览
  • 详细解释每个生命周期的应用
    • beforeCreate(创建前)
    • created(创建后)
    • beforeMount(挂载前)
    • mounted(挂载后)
    • beforeUpdate(更新前)
    • updated(更新后)
      • 获取更新前后的dom元素
      • 类似更新的dom元素类似的方法:`$nextTick`
      • 类似更新的dom元素类似的方法:`$watch`
    • beforeDestroy(销毁前)
    • destroyed(销毁后)
  • 代码示例

概览

这里把Vue的官网贴出来:Vue的生命周期钩子

Vue组件的生命周期可以分为以下八个阶段:

  1. beforeCreate:组件实例刚被创建,属性和方法还未初始化,不能访问到data、props、computed等数据。

  2. created:组件实例创建完成,属性和方法已经初始化,但是DOM还未渲染出来。可以访问到data、props、computed等数据,并进行一些初始化操作。

  3. beforeMount:组件将要被挂载到页面上,此时DOM还未渲染出来。

  4. mounted:组件已经被挂载到页面上,此时DOM已经渲染出来,可以进行一些DOM操作和数据请求等操作。

  5. beforeUpdate:组件更新之前被调用,此时DOM还未被更新。

  6. updated:组件更新完毕后被调用,此时DOM已经被更新,可以进行一些DOM操作和数据请求等操作。

  7. beforeDestroy:组件将要被销毁,此时组件还可以访问到data、props、computed等数据,可以进行一些清理操作。

  8. destroyed:组件已经被销毁,此时组件已经无法访问到data、props、computed等数据。

在每个生命周期阶段,Vue提供了对应的钩子函数,程序员可以在这些钩子函数中编写代码来处理相应的操作。同时,在每个生命周期阶段,程序员可以通过访问组件实例来获取和操作相应的数据和方法。

详细解释每个生命周期的应用

Vue 组件的生命周期可以分为8个阶段,程序员可以在每个阶段执行一些特定的操作。这里详细介绍一下每个阶段的具体说明、可以获取到的 API 以及程序员可以做的事情。

beforeCreate(创建前)

beforeCreate(创建前) 在组件实例化之前被调用,此时程序员可以获取到组件的配置对象(options),但是无法访问到组件的数据和方法。此时的组件还没有初始化完成,因此也没有 DOM 元素。在这个阶段,程序员可以做一些初始化工作,例如加载外部数据、初始化事件等操作。 可以获取到的 API:

  • this.$options:访问组件的配置对象。

  • 程序员可以做的事情:

    • 加载外部数据。

    • 初始化事件。

created(创建后)

created(创建后) 在组件实例化完成后被立即调用,此时程序员可以访问到组件的数据和方法,但是无法访问到 DOM 元素。此时的组件还没有被挂载到页面上。在这个阶段,程序员可以做一些组件初始化的工作,例如对数据进行操作、访问服务器等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • 程序员可以做的事情:

    • 对数据进行操作。

    • 访问服务器。

beforeMount(挂载前)

beforeMount(挂载前) 在组件被挂载到页面之前调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。在这个阶段,程序员可以对组件进行一些初始化操作,例如修改 DOM 元素的样式、添加事件监听器等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • this.$el:访问组件的 DOM 元素。

  • 程序员可以做的事情:

    • 修改 DOM 元素的样式。

    • 添加事件监听器。

mounted(挂载后)

mounted(挂载后) 在组件被挂载到页面之后调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。在这个阶段,程序员可以进行一些需要访问 DOM 元素的操作,例如获取 DOM 元素的宽度和高度、添加第三方库等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • this.$el:访问组件的 DOM 元素。

  • 程序员可以做的事情:

    • 获取 DOM 元素的宽度和高度。

    • 添加第三方库。

beforeUpdate(更新前)

beforeUpdate(更新前) 在组件更新之前调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。在这个阶段,程序员可以进行一些数据准备工作,例如计算需要更新的数据、清空某些数据等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • this.$el:访问组件的 DOM 元素。

  • 程序员可以做的事情:

    • 计算需要更新的数据。

    • 清空某些数据。

updated(更新后)

updated(更新后) 在组件更新之后调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。在这个阶段,程序员可以进行一些 DOM 操作,例如修改 DOM 元素的样式、添加事件监听器等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • this.$el:访问组件的 DOM 元素。

  • 程序员可以做的事情:

    • 修改 DOM 元素的样式。

    • 添加事件监听器。

注意点:更新事件(beforeUpdate以及updated)可以重复触发

获取更新前后的dom元素



updated 钩子函数中,我们可以通过 this.$el 获取更新后的 DOM 元素,通过 this 获取更新后的组件实例,并在这里做一些操作,例如获取更新后的计算属性值、操作子组件等。需要注意的是,updated 钩子函数只有在组件的 VNode 更新之后才会被调用,所以在此之前,我们无法获取到更新后的信息。

类似更新的dom元素类似的方法:$nextTick

nextTick方法常常用于在DOM更新后执行某些操作,例如获取更新后的DOM元素或在更新后设置焦点。nextTick 方法常常用于在 DOM 更新后执行某些操作,例如获取更新后的 DOM 元素或在更新后设置焦点。nextTick方法常常用于在DOM更新后执行某些操作,例如获取更新后的DOM元素或在更新后设置焦点。nextTick 方法是异步执行的,因此可以保证在 DOM 更新完成后执行回调函数。



在上面的代码中,我们在 changeMessage 方法中修改了 message 的值,并通过 $nextTick 方法在 DOM 更新完成后获取了更新后的标题元素并设置了其焦点。

类似更新的dom元素类似的方法:$watch

$watch 方法常常用于监听数据的变化,并在数据变化时执行某些操作。



在上面的代码中,我们通过 $watch 方法监听了 message 的变化,并在 message 变化时打印了变化前后的值。

beforeDestroy(销毁前)

beforeDestroy(销毁前) 在组件实例销毁之前调用,此时程序员可以访问到组件的数据和方法,也可以访问到 DOM 元素。在这个阶段,程序员可以进行一些清理工作,例如取消事件监听器、清除定时器等操作。 可以获取到的 API:

  • this:访问组件的数据和方法。

  • this.$el:访问组件的 DOM 元素。 程序员可以做的事情:

  • 取消事件监听器。

  • 清除定时器。

destroyed(销毁后)

destroyed(销毁后) 在组件实例销毁之后调用,此时程序员无法访问到组件的数据和方法,也无法访问到 DOM 元素。在这个阶段,程序员可以进行一些清理工作,例如释放内存、取消网络请求等操作。

  • 可以获取到的 API:无

  • 程序员可以做的事情:

    • 释放内存。

    • 取消网络请求。

代码示例



在上面的代码中,我们定义了一个简单的组件,包含一个按钮和一个消息。在组件的生命周期中,我们通过 console.log() 输出了不同阶段的信息。 此外,我们还定义了一个 changeMessage() 方法,用于修改消息。在该方法中,我们更改了组件的数据,并在页面上实时更新了消息。

相关内容

热门资讯

杭州重点高中有哪些,杭州有哪些... 杭州重点高中有哪些目录杭州重点高中有哪些杭州有哪些重点高中杭州哪所高中最好杭州重点高中有哪些 ...
女为悦己者容意思,士为知己者死... 女为悦己者容意思目录女为悦己者容意思士为知己者死,女为悦己者容.是什么意思.女人无需为悦己者容悦人不...
北戴河是海吗 极速百科网 极速... 北戴河是海吗目录北戴河是海吗北戴河是海吗 北戴河是海。北戴河古称渝水,清光绪年间,因沙河流经戴...
外婆是什么样的关系,姥姥与我的... 外婆是什么样的关系目录外婆是什么样的关系姥姥与我的关系叫什么关系姥姥是指外婆还是奶奶??我与外婆是什...
头歌--第1关:Linux文件... 任务描述 假设系统中存在一个文件File,修改该文件的权限,根据实际需求...
【Spring从成神到升仙系列... 👏作者简介:大家好,我是爱敲代码的小黄,独...
梦见蜈蚣是什么意思,做梦梦见蜈... 梦见蜈蚣是什么意思目录梦见蜈蚣是什么意思做梦梦见蜈蚣什么意思梦见蜈蚣是什么意思,哪里有解释啊梦见蜈蚣...
小区车位比一般是多少,车库配比... 小区车位比一般是多少目录小区车位比一般是多少车库配比是什么小区总户数8200,总车位是1450个,配...
车锁上的lock什么意思,汽车... 车锁上的lock什么意思目录车锁上的lock什么意思汽车上lock是什么意思?车子上“lock标志”...
kirin710是什么处理器,... kirin710是什么处理器目录kirin710是什么处理器海思kirin710是高通多少?骁龙71...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
跟着文档制作cocos第一个游... 背景 近期打算学习一下cocos creator,想着开发自己的游戏,是...
乌干达是什么梗,网络语乌干达什... 乌干达是什么梗目录乌干达是什么梗网络语乌干达什么意思?乌干达是什么梗乌干达是什么梗乌干达是什么梗 ...
车载电子狗怎么用,怎样使用电子... 车载电子狗怎么用目录车载电子狗怎么用怎样使用电子狗怎么使用电子狗求简答车载电子狗怎么使用车载电子狗怎...
梦见偷东西是什么意思,梦见自己... 梦见偷东西是什么意思目录梦见偷东西是什么意思梦见自己偷东西是什么意思?做梦梦见自己偷东西好不好梦见偷...
黄金瞳到底是什么,黄金瞳电视剧... 黄金瞳到底是什么目录黄金瞳到底是什么黄金瞳电视剧什么时候上映?《黄金瞳》的结局是什么?电视剧《黄金瞳...
前端-session、jwt 目录:   (1)session (2&#x...
企业即时通讯怎样为企业实现移动... 对于企业来说,在办公过程中少不了工作人员相互传递信息和数据传输,企业内部...
骑行选择什么自行车 极速百科网... 骑行选择什么自行车目录骑行选择什么自行车骑行选择什么自行车 1. 山地自行车:适合崎岖不平的路...
蓝色都有哪几种,蓝色都有什么颜... 蓝色都有哪几种目录蓝色都有哪几种蓝色都有什么颜色的蓝图片,蓝色都有什么颜色的蓝二年级蓝色有哪些种类蓝...
如何自学游泳要安全的,初学游泳... 如何自学游泳要安全的目录如何自学游泳要安全的初学游泳的人需要准备哪些东西,注意哪些事项?如何自学游泳...
一年级家长的话怎么写评语,一年... 一年级家长的话怎么写评语目录一年级家长的话怎么写评语一年级学生评价手册家长寄语怎么写一年级最佳家长评...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
docker 镜像管理 查看本地镜像 docker images 可以查看本地下载的镜像 docker images [O...
k8s-1.22.15部署ng... 1.介绍 在前面文章中已经提到,Service对集群之外暴露服务的主要方式有两种&#x...
革命烈士寄语怎么写,清明节缅怀... 革命烈士寄语怎么写目录革命烈士寄语怎么写清明节缅怀先烈的寄语有哪些呢?革命烈士寄语怎么写 革命...
5万元以下新车推荐,5万以下买... 本篇文章极速百科给大家谈谈5万元以下新车推荐,5万以下买什么车好,以及5万以下的新车哪款最好对应的知...
真皮沙发翻新一般多少钱?(真皮... 本篇文章极速百科给大家谈谈真皮沙发翻新一般多少钱?,以及真皮沙发翻新一般多少钱一个对应的知识点,希望...
磨皮什么意思(磨皮是啥?) 磨... 本篇文章极速百科给大家谈谈磨皮什么意思,以及磨皮是啥?对应的知识点,希望对各位有所帮助,不要忘了收藏...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...