【无标题】Vue的⽣命周期详解

#Vue的⽣命周期详解
每个Vue实例都有⼀个完整的⽣命周期,当⾯试官提到让你谈谈对Vue的⽣命周期的理解时,
如何回答才是⼀个令⼈满意的回答?
第⼀个问题:什么是Vue的⽣命周期?
通俗的来说,⼀个Vue实例从创建到销毁的这个过程,我们称之为Vue的⽣命周期。
整个流程?
开始创建⼀个Vue实例 —> 初始化Vue实例内部数据 —> 模板开始编译 —> 挂载并渲染
#dom
—> 更新数据(可能有这个过程) —> Vue实例开始销毁 —> 实例销毁完毕
整个流程⼤概如上,这个流程⾥,Vue实例会触发⼀些钩⼦。谈到这,可能有童鞋会有
疑问,什么是钩⼦?
什么是钩⼦?
钩⼦,其实是钩⼦函数的简称,说的简单点,就是Vue实例的⽣命周期⾥,⾃动会触发
的函数,有的话就执⾏这个函数,这也就是我们常说的钩⼦。
简单的概念和流程到此结束,那么Vue组件的⽣命周期⾥,这些钩⼦触发的时候,到底⼲了什
么事情?
详解触发钩⼦时已完成的操作及建议的操作
#beforeCreate
实例初始化,将this指向Vue实例,此时data computed watch methods上的⽅法
和数据均不能访问
可在此处加⼊loading事件
#created
实例创建完成,完成数据(data props computed)的初始化 ,可访问其中的数据。
此时未挂载dom,也不能访问Vue实例中的 e l 属 性 没 有 d o m , 也 就 是 说 el属性 没有dom,也就是说 eldomref为空数组了
可以对data数据进⾏操作,可进⾏⼀些请求,请求不易过多,避免⽩屏时间太⻓。
若在此阶段进⾏的 DOM 操作⼀定要放在 Vue.nextTick() 的回调函数中,dom更新
的时候,才会触发nextTick⾥的回调函数。
也可在此处结束loading
#berofeMount
此时 e l 挂 载 完 毕 , 并 且 把 V u e 实 例 中 t e m p l a t e 部 分 编 译 成 r e n d e r 函 数 , 或 者 直 接 执 ⾏ r e n d e r 函 数 使 ⽤ r e n d e r 函 数 的 结 果 和 我 们 之 前 使 ⽤ t e m p l a t e 解 析 出 来 的 结 果 是 ⼀ 样 的 。 r e n d e r 函 数 是 发 ⽣ 在 b e f o r e M o u n t 和 m o u n t e d 之 间 的 , 这 也 从 侧 ⾯ 说 明 了 , 在 b e f o r e M o u n t 的 时 候 , el挂载完毕,并且把Vue实例中template部分编译成render函数,或者直接执⾏render函数 使⽤render函数的结果和我们之前使⽤template解析出来的结果是⼀样的。 render函数是发⽣在beforeMount和mounted之间的,这也从侧⾯说明了,在 beforeMount的时候, elVuetemplaterender,render使render使templaterenderbeforeMountmountedbeforeMountel还只是我们在HTML⾥⾯写的节点,然后到mounted的时候,它就把渲染出来的内容挂载到了DOM节点上。这中间的过程其实是执⾏了render函数的内容。
#mounted
完成创建vm. e l , d o m 此 时 已 经 根 据 t e m p l a t e 编 译 的 r e n d e r 函 数 , 渲 染 完 成 有 了 D O M 且 完 成 了 双 向 绑 定 可 访 问 D O M 节 点 及 el,dom此时已经根据template编译的render函数,渲染完成 有了DOM且完成了双向绑定 可访问DOM节点及 eldomtemplaterenderDOM访DOMref属性
#beforeUpdate(更新数据时触发)
数据更新之前,可在更新前访问现有的DOM,如⼿动移除添加的事件监听器
updated
完成虚拟DOM的重新渲染
组件DOM 已完成更新;
可执⾏依赖的dom 操作
注意:不要在此函数中操作数据,会陷⼊死循环的。
#activated
在使⽤ vue-router 时,有时我们会使⽤ keep-alive 标签来保持组件的状态,避
免频繁发送请求。此时,created钩⼦就不会被重复调⽤了。因此,如果我们需要
在组件每次加载的时候进⾏某些操作,可以在activated这个钩⼦当中触发。
#deactivated
被 keep-alive 标签包住的组件,被移除时触发
#beforeDestroy
实例销毁之前调⽤。在这⼀步当中,实例仍然完全可⽤。
可做⼀些删除提示,⽐如,“您确认离开此⻚⾯”
可⽤于销毁定时器,解绑全局事件或者销毁引⼊的插件对象
destroyed
Vue 实例销毁后调⽤。此时Vue实例⾥的数据解除绑定,所有的事件监听器也被移
除了
最后丢⼀张官⽹的Vue⽣命周期图解给⼤家巩固下

在这里插入图片描述

谢谢大家的观看,你的点赞与关注就是对我最大的支持

Thank you for watching. Your praise and attention are my greatest support

Спасибо вам за просмотр, ваши похвалы и внимание, это моя самая большая поддержка

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kewen_and_Ulrikh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值