位置: IT常识 - 正文

【vue2】vue生命周期的理解(vue生命周期图解)

编辑:rootadmin
【vue2】vue生命周期的理解

推荐整理分享【vue2】vue生命周期的理解(vue生命周期图解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue生命周期分别做了什么,vue2.x生命周期,vue2.x生命周期,vue的生命,vue2.x生命周期,vue2.x生命周期,vue生命周期详解简书,vue生命周期详解简书,内容如对您有帮助,希望把文章链接给更多的朋友!

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:vue生命周期的介绍、vue生命周期钩子函数详解,vue生命周期的执行顺序

目录

一、生命周期介绍

二、生命周期的构成

1. 生命周期的四个阶段 :

2.八大钩子作用:

1.beforeCreate():

2.created()

3.beforeMont()

4.monted()

5.beforeUpdata()

6.updated()

7.beforeDestroy()

8.destroyed()

三、执行顺序


一、生命周期介绍

概念:

即一个组件从创建到销毁的一个完整的过程

二、生命周期的构成

钩子概念: vue从创建到销毁过程中,会执行的一些回调函数

1. 生命周期的四个阶段 : 初始化阶段:  beforeCreate、 created 挂载阶段 : beforeMount、mounted 更新阶段 : beforeUpdate、updated 销毁阶段:  beforeDestroy、destroyed执行顺序钩子函数执行时机1beforeCreate(){}

vue实例创建了,但是el和data还没有创建 (准备创建data)

底层(初始化vue实例,初始化钩子函数,初始化一些事件和侦听器配置项)

2created() {}

data数据创建了,但是el挂载点还没有创建 (准备创建el)

底层:初始化data中的数据和methods中的方法

3beforeMount() {}

el挂载点创建了,但是data数据还没有渲染(准备渲染中)

底层:创建el挂载点,并且生成虚拟DOM

4mounted() {}

data数据 第一次 渲染完毕 (完成初始渲染)

底层:将虚拟dom渲染成真实DOM

5beforeUpdate() {}检测到data数据变化,但是还没有开始重新渲染 (data变了,准备重新渲染中) 会执行多次6updated() {}变化后的data数据 ,完成渲染到页面 (完成重新渲染,会重复执行7beforeDestroy() {}

vue实例销毁即将销毁(解除data与el的关联),之后修改data,页面不会被渲染

底层 : 解除 事件绑定、侦听器、组件

8destroyed() {}

vue实例已经销毁

2.八大钩子作用:

[前置准备]先创建一个空的vue文件,写入我们需要的素材

<template> <div> <button @click=" name='李四' ">点我改名字</button> <button @click="$destroy()">点我销毁</button> <p>{{ name }}</p> <p>{{ age }}</p> </div></template><script>export default { data() { return { name: "张三", age: 20 }; }};</script><style></style>

上述页面浏览效果如下:

1.beforeCreate():vue实例创建了,但是el和data还没有创建 (准备创建data)底层(初始化vue实例,初始化钩子函数,初始化一些事件和侦听器配置项)/* 生命周期钩子 */// 1. beforeCreate() : 创建了vue实例,但是还没有创建data beforeCreate() { console.log(1); console.log(this); console.log(this.name); }

写入beforeCreate页面效果查看:

我们是生成了初始的vue实例,但是我们存放在data中的数据没有取到

2.created()创建初始了data,但是还没有挂载经典应用 : 页面一加载, ajax请求数据渲染页面。一般写在这个钩子里面 // 2.created() : 创建了data,但是还没有挂载 /* 常用: 最早可以获取data的钩子, 一般在这个钩子发送ajax */ created() { console.log(2); console.log(this); console.log(this.name); console.log(this.$el); }

写入created页面效果查看:

此时我们存放在data中的数据被找到了 ,但是我们的挂载点没有被找到

3.beforeMont()创建挂载点,但是还没有把data挂载到el// 3.beforeMount() : 创建挂载点,但是还没有把data挂载到el beforeMount() { console.log(3); console.log(this); // html环境,这个钩子$el可以获取挂载点。 脚手架环境, 这个钩子$el获取的是undefined console.log(this.$el); const p = document.querySelector("p"); console.log(p); //null 没有渲染,所以无法获取dom }

 写入beforeMont页面效果查看:

【vue2】vue生命周期的理解(vue生命周期图解)

这一步是生成创建我们的挂载点 

4.monted()完成初始渲染。 把data数据渲染到挂载点el经典应用 : 一般常用于操作dom(页面一家在需要操作DOM在这个钩子上) mounted() { console.log(4); console.log(this); console.log(this.$el); const p = document.querySelector("p"); console.log(p); // p标签 完成渲染 }

  写入monted页面效果查看:

我们的挂载点创建成功,讲我们data中的数据存放进去并渲染成功啦!

经历了上述的四个阶段的操作现在我们完成了组件data中的被数据获取到页面渲染的整个流程,接下来的钩子是用于修改data数据与销毁我们的vue实例

5.beforeUpdata() 检测到data数据发生变化,但是还没有更新el检测data数据变化, 修改虚拟DOM当有data数据改变 – 重复这个循环( beforeUpdata()与updated() )

 写入beforeUpdata页面效果查看:

 第一步:先在我们的vue中打一个debuddgr断点,防止我们走到updataed的位置

beforeUpdate() { console.log(5); console.log(this);// 获取的是变化后的数据, 但是页面还是显示之前的数据 debugger }

第二步:我们现在在vuetools中修改data中的数据,当修改数据后面不变化!当我确定的时候会依旧变成张三。但是我们的内存中会显示出我们修改过的内容

 可以看到我们的vue实例对象中的name被我们成功的修改了,但是大家看右上角的张三,并没有被我们修成。

【再次验证】这是我们直接修改data中的数据,当我们点击 “点我改名字”这个按钮的时候也会出现

之后我们卡在这里了,当我们点击箭头的时候,我们的vue就更新了 

6.updated()更新之后的data,完成渲染完成data渲染(将虚拟DOM渲染成真实DOM) // 6.updated(): 更新之后的data,完成渲染 updated() { console.log(6); console.log(this); }

 写入updated页面效果查看:

显而易见当我们修改之后我们的数据马上就渲染到页面上了。实现了彻底更新的操作

7.beforeDestroy() 正在销毁(接触data与el绑定、移除事件监听、移除侦听器)   触发销毁钩子的两个条件    (1)对组件使用v-if   (2)调用组件的 this.$destroy() 

 写入beforeDestroy页面效果查看:

我们的vue实例正在被销毁

8.destroyed()完成销毁 //8.destroyed(): 完成销毁 destroyed() { console.log(8); console.log(this); }

   写入destroy页面效果查看:

至此我们的vue实例对象从出生创建到销毁喽

上述操作的源代码见下:

App.vue

<template> <div> <button @click="name = '李四'">点我改名字</button> <button @click="$destroy()">点我销毁</button> <p>{{ name }}</p> <p>{{ age }}</p> </div></template><script>export default { data() { return { name: '张三', age: 20, } }, /* 生命周期钩子 */ // 1. beforeCreate() : 创建了vue实例,但是还没有创建data beforeCreate() { console.log(1) console.log(this) console.log(this.name) }, // 2.created() : 创建了data,但是还没有挂载 /* 常用: 最早可以获取data的钩子, 一般在这个钩子发送ajax */ created() { console.log(2) console.log(this) console.log(this.name) console.log(this.$el) }, // 3.beforeMount() : 创建挂载点,但是还没有把data挂载到el beforeMount() { console.log(3) console.log(this) // html环境,这个钩子$el可以获取挂载点。 脚手架环境, 这个钩子$el获取的是undefined console.log(this.$el) const p = document.querySelector('p') console.log(p) //null 没有渲染,所以无法获取dom') }, // 4.mounted() : 完成初始渲染。 把data数据渲染到挂载点el /* 常用: 最早可以操作DOM的钩子 */ mounted() { console.log(4) console.log(this) console.log(this.$el) const p = document.querySelector('p') console.log(p) // p标签 完成渲染 }, // 5.beforeUpdate() : 检测到data数据发生变化,但是还没有更新el beforeUpdate() { console.log(5) console.log(this) // 获取的是变化后的数据, 但是页面还是显示之前的数据 // eslint-disable-next-line no-debugger debugger }, // 6.updated(): 更新之后的data,完成渲染 updated() { console.log(6) console.log(this) }, // 7.beforeDestroy(): 正在销毁(接触data与el绑定、移除事件监听、移除侦听器) /*触发销毁钩子的两个条件 (1)对组件使用v-if (2)调用组件的 this.$destroy() */ beforeDestroy() { console.log(7) console.log(this) // eslint-disable-next-line no-debugger }, //8.destroyed(): 完成销毁 destroyed() { console.log(8) console.log(this) },}</script><style></style>三、执行顺序

即按照我们介绍钩子函数的顺序依次往下执行

App.vue

<template> <div> <!-- 导入子组件 --> <son></son> </div></template><script>import son from '@/components/son.vue'export default { components: { son }, /* 生命周期钩子 */ // 1. beforeCreate() : 创建了vue实例,但是还没有创建data beforeCreate() { console.log('父的beforeCreate') }, // 2.created() : 创建了data,但是还没有挂载 /* 常用: 最早可以获取data的钩子, 一般在这个钩子发送ajax */ created() { console.log('父的Created') }, // 3.beforeMount() : 创建挂载点,但是还没有把data挂载到el beforeMount() { console.log('父的beforeMount') }, // 4.mounted() : 完成初始渲染。 把data数据渲染到挂载点el /* 常用: 最早可以操作DOM的钩子 */ mounted() { console.log('父的Mounted') },}</script><style></style>

 son.vue

<!-- eslint-disable vue/multi-word-component-names --><template> <div> </div></template><script>export default { beforeCreate() { console.log('子的beforeCreate') }, // 2.created() : 创建了data,但是还没有挂载 /* 常用: 最早可以获取data的钩子, 一般在这个钩子发送ajax */ created() { console.log('子的Created') }, // 3.beforeMount() : 创建挂载点,但是还没有把data挂载到el beforeMount() { // html环境,这个钩子$el可以获取挂载点。 脚手架环境, 这个钩子$el获取的是undefined console.log('子的beforeMount') }, // 4.mounted() : 完成初始渲染。 把data数据渲染到挂载点el /* 常用: 最早可以操作DOM的钩子 */ mounted() { console.log('子的Mounted') },}</script><style></style>

 我们跑一下看下执行效果:

 发现是我们父元素先执行到beforeMont,随后等子渲染完成(执行子的mounted)最后将父的mounted执行完成,完成我们最终的渲染。虽然是有包含关系,但是执行流程是不变的。

本文链接地址:https://www.jiuchutong.com/zhishi/300140.html 转载请保留说明!

上一篇:【AI理论学习】多模态介绍及当前研究方向(aida理论包括哪些内容?)

下一篇:Docker容器部署及基本使用(docker 容器)

  • iphone蓝牙转圈的解决(iphonex蓝牙转圈)

    iphone蓝牙转圈的解决(iphonex蓝牙转圈)

  • ipadqq群视频怎么开(ipadqq群视频怎么全屏)

    ipadqq群视频怎么开(ipadqq群视频怎么全屏)

  • 网页视频全屏按钮无效(网页视频全屏按键)

    网页视频全屏按钮无效(网页视频全屏按键)

  • 240*360是几寸照片(240*320的照片是几寸)

    240*360是几寸照片(240*320的照片是几寸)

  • iphone充电到90充不进去(iphone充电90%以上就慢)

    iphone充电到90充不进去(iphone充电90%以上就慢)

  • 荣耀30没耳机吗(荣耀30不配耳机吗)

    荣耀30没耳机吗(荣耀30不配耳机吗)

  • 全民k歌怎么不让qq好友看到(全民k歌怎么不让某个人看到)

    全民k歌怎么不让qq好友看到(全民k歌怎么不让某个人看到)

  • 电脑windows无法访问指定设备是什么意思(电脑windows无法打开此文件怎么办)

    电脑windows无法访问指定设备是什么意思(电脑windows无法打开此文件怎么办)

  • 在word中目录可以通过什么选项插入(word中目录可以显示关键字吗)

    在word中目录可以通过什么选项插入(word中目录可以显示关键字吗)

  • 荣耀9x前摄像头容易坏吗(荣耀9x前摄像头更换视频)

    荣耀9x前摄像头容易坏吗(荣耀9x前摄像头更换视频)

  • tas-an00是什么手机(tas–an00)

    tas-an00是什么手机(tas–an00)

  • 剪映怎么关闭原声(剪映怎么关闭原因)

    剪映怎么关闭原声(剪映怎么关闭原因)

  • 描述性文件删除不了怎么办(描述性文件删除不掉)

    描述性文件删除不了怎么办(描述性文件删除不掉)

  • 输入sim卡1puk是什么意思(输入sim2puk码什么意思)

    输入sim卡1puk是什么意思(输入sim2puk码什么意思)

  • 华为手机全面屏返回键怎么显示出来(华为手机全面屏手势设置在哪里)

    华为手机全面屏返回键怎么显示出来(华为手机全面屏手势设置在哪里)

  • 手机deliverserver是什么软件(手机号码测吉凶)

    手机deliverserver是什么软件(手机号码测吉凶)

  • 硬盘和光盘属于什么媒体(硬盘和光盘属于多媒体信息)

    硬盘和光盘属于什么媒体(硬盘和光盘属于多媒体信息)

  • 安卓刷机模式怎么进入(安卓刷机模式怎么开)

    安卓刷机模式怎么进入(安卓刷机模式怎么开)

  • 如何关闭饿了么会员自动续费(如何关闭饿了么吃货卡自动续费)

    如何关闭饿了么会员自动续费(如何关闭饿了么吃货卡自动续费)

  • 手机密码忘记了(手机密码忘记了不清除数据怎么解)

    手机密码忘记了(手机密码忘记了不清除数据怎么解)

  • Apple Watch S5怎么使用支付功能(apple watch5怎么用)

    Apple Watch S5怎么使用支付功能(apple watch5怎么用)

  • word怎样添加参考文献脚注(如何在word文档中添加参考文献)

    word怎样添加参考文献脚注(如何在word文档中添加参考文献)

  • airpods怎么控制音量(airpods怎么控制酷狗)

    airpods怎么控制音量(airpods怎么控制酷狗)

  • mate30pro多少倍变焦(华为mate30pro最大多少倍变焦)

    mate30pro多少倍变焦(华为mate30pro最大多少倍变焦)

  • lin总线有几根线(lin总线d)

    lin总线有几根线(lin总线d)

  • 小爱音响无法连接网络(小爱音响无法连接5gWIFI怎么处理)

    小爱音响无法连接网络(小爱音响无法连接5gWIFI怎么处理)

  • 被移出群聊怎么恢复(被移出群聊怎么看群还在不在)

    被移出群聊怎么恢复(被移出群聊怎么看群还在不在)

  • 苹果x返回键失灵怎么办(苹果x返回键失灵怎么办屏幕还乱跳)

    苹果x返回键失灵怎么办(苹果x返回键失灵怎么办屏幕还乱跳)

  • 充电书包怎么使用(充电书包怎么给手机充电)

    充电书包怎么使用(充电书包怎么给手机充电)

  • Win10复制粘贴无法使用如何修复?Win10复制粘贴无法使用的解决方法(win10粘贴复制无效)

    Win10复制粘贴无法使用如何修复?Win10复制粘贴无法使用的解决方法(win10粘贴复制无效)

  • yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署(瑞芯微 8nm)

    yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署(瑞芯微 8nm)

  • 税金及附加属于管理费用吗
  • 未分配利润具体内容
  • 利息资本化计入什么现金流量科目
  • 每个季度申报怎么申报?
  • 注销有几种方法
  • 法人投入投资款
  • 以前年度损益调整影响哪个科目
  • 承租人与出租人签订了一份租赁合同,该设备
  • 代理记账有什么风险吗
  • 固定资产后续支出的确认和处理
  • 企业成立股东没有实际出资分录怎么写?
  • 旅行社开哪里比较好
  • 实收资本退还
  • 开具旧税号也能认证成功
  • 营业外收入不纳税?
  • 补缴地价款是什么意思
  • 电子汇票如何背书步骤
  • 建筑工程公司开票如何做收入
  • 电商平台名称怎么注册
  • 旅游业企业所得税要求
  • 民办非企业捐赠支出会计处理
  • 发放的离职补偿金怎么做账
  • 办税员的工作职责
  • 不动产抵押合同管辖法院
  • 销售费用有哪些?
  • 应收票据计提利息应做的会计分录是
  • php ffi 教程
  • 收款凭证和付款凭证区别
  • 建房转让协议书
  • 目标检测算法的主要目的是找到图像中用户感兴趣的
  • 银行手续费未开发票
  • 外贸企业收到红字发票
  • pdo php
  • php替换文本指定内容
  • 投资性房地产公允价值大于账面价值计入
  • 增值税进项发票丢失最新处理办法
  • 让 new bing 使用 GPT-4 编写一个令人满意的程序全过程赏析
  • 雪花算法workid
  • 视觉slam ba
  • javaweb界面设计
  • vue里的for循环
  • 什么是支付宝账号如何查看
  • 个税申报的本期收入填什么
  • python的多线程 吃cpu太厉害
  • python字符串如何换行
  • 将表里的数据批量删除
  • 个人独资企业的特点
  • 公司注销单位公积金账户余额怎么处理
  • 企业所得税中通过研发费用辅助账
  • 小规模纳税人如何升级为一般纳税人
  • 企业购买了数千亿资产
  • 逾期未认证的增值税发票处理办法
  • 现金日记账怎么记账
  • 其他应付款转应付账款分录
  • 开发阶段的支出计入什么科目
  • 企业对外借款是什么意思
  • 公司需要现金
  • 生鲜配送账务处罚标准
  • 设备基础属于什么基础
  • 会计明细账怎么记
  • mysql优化技巧实战
  • 64位win8怎么安装南天PR2E针式打印机驱动?
  • microsoft wlan
  • win7系统有wifi功能吗
  • Visual Studio 2013 Tools for Unity安装目录,Visual Studio 2013 Tools.unitypackage
  • javascript怎么设置
  • vue中使用foreach
  • python ftp storbinary
  • node.js快速入门
  • android.intent.extra.text
  • 3ds 俄罗斯方块
  • jquery遍历div
  • web开发工程师需要学什么
  • jquery返回顶部代码
  • 电子专票票种核定
  • 境外付汇税务备案要多久
  • 国家税务局总局网址
  • 餐饮企业需要缴纳哪些税
  • 三代手续费退还银行网点变更怎么办
  • 高新区地税办税服务厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设