【7】Vue学习-生命周期

一、引出生命周期

Vue的生命周期和人一样,人的生命周期指的是:出生->成长->死亡 这一个过程。而Vue的生命周期指的是我们的vm或者组件实例对象的一生:创建->挂载->更新->销毁 整个过程。总共涉及八个(四对)生命周期函数。下面讲述一下生命周期的几个概念。

1.生命周期是什么:Vue在关键时候帮我们调用的一些特殊名称的函数
1.生命周期又名:生命周期回调函数,生命周期函数、生命周期钩子。我们说生命周期就是说他的钩子函数
2.周期函数的名字不可更改,但是函数的具体内容程序员可自定义
4.生命周期函数中的this指向的是vm或者组件实例对象。

二、生命周期流程

Vue的生命周期可以分为三个阶段:创建阶段、更新阶段、销毁阶段。每个阶段都有它独有的钩子函数,下面我们会详细讲解他们的作用。Vue的生命周期流程如图所示。
在这里插入图片描述

1.创建阶段

Vue的创建过程指的是创建实例对象一直到挂载的整个阶段,整个过程会调用两对钩子函数,他们分别是:

将要创建阶段:beforeCreate(){}
创建完成阶段:created(){}
将要挂载阶段:beforeMount(){}
挂载完毕阶段:mounted(){}

当创建实例化对象之后,首先进行生命周期和事件的初始化,然后调用beforeCreate()函数。

beforeCreate()函数:

此时由于没有数据监测和数据代理,`无法通过vm访问到data中的数据、methods中的方法`

然后对数据检测和数据代理进行初始化,之后调用Created()函数。

Created()函数:

此时`可以通过vm访问到data中的数据、methods中配置的方法。`

之后Vue开始解析模板,生成虚拟DOM,这时候页面不能显示解析好的内容。主要会进行两个操作。

1.判断有无el,有则开始解析模板;没有则等调用vm.$mount(el)的时候开始解析.
2.判断vue实例中有无template这个功能函数,有的话则直接把template中的内容作为模板解析;
	没有则将<template></template>标签中的东西作为模板解析.

template功能函数在Vue2和Vue3中写法如下

template:`
	<div>
	vue2中必须有一个根元素	
	</div>
`
template:`
	vue3中不需要设置唯一根元素
`

模板解析完毕之后,调用beforeMount()函数

beforeMount函数:

1.页面呈现的是`未经Vue编译`的DOM结构
2.所有对DOM的操作,最终都不奏效

之后会将内存中的虚拟DOM转为真实DOM插入页面。这时将会调用mounted()函数

mounted()函数:

1. 页面中呈现的是`经过Vue编译`的DOM结构
2. 对DOM的操作均有效(尽量避免)

2.更新阶段

Vue是一个响应式布局,在更新阶段,数据发生改变的时候,页面会随之更新,更新阶段流程如下:

当诗句发生改变的时候,调用beforeUpdate()函数

beforeUpdate函数:

此时`数据是新的,但是页面是旧的`,页面和数据没有保持同步

之后,Vue根据新的数据,生成新的虚拟DOM,与旧的DOM进行比较之后,页面会更新不同之处。这时就完成了Model->View的更新(MVVM模型),之后调用updated()函数,之后一直等待下一次数据变化,更新阶段可以一直执行。

updated()函数:

此时`数据是新的,页面也是新的`,页面和数据保持同步

3.销毁阶段

销毁阶段使用很少,具体流程为:首先调用beforeDestroy()函数,不管Vue的生命是他杀还是自杀,我们都是通过调用beforeDestroy()函数,然后在它里面自定义。

beforeDestroy()函数:

1.此时,`vm中所有的:data、methods、指令等等都是可用状态`,马上要执行销毁过程
2.在这里,通常进行关闭定时器、取消订阅消息、解绑自定义事件等收尾操作

之后调用 destroyed() 函数,销毁阶段结束

三、总结

对于了解整个流程之后,我们只需要会使用几个关键的钩子函数即可。这里需要说明除了更新阶段的一对钩子函数之外,其余只能调用一次。生命周期钩子流程总结如下:

Vue的生命周期:
		将要创建===>调用beforeCreate()函数
		创建完毕===>调用created()函数
		将要挂载===>调用beforeMount函数
  `(重要)挂载完毕===>调用mounted函数===========>【重要的钩子】`
		将要更新===>调用beforeUpdate()函数
		更新完毕===>调用updatad函数
  `(重要)将要销毁===>调用beforeDestroy函数========>【重要的钩子】`
		销毁完毕===>调用destroyed函数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值