VUe2生命周期

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM,卸载。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。

创建阶段

①befoteCreate

在实例初始化后,进行数据侦听和事件侦听器的配置之前被调用

这个阶段,获取不到数据,真实dom元素也没有被渲染出来,一般不用这个钩子函数做事件。

②created

在实例创建完成后被立即调用

这个阶段,页面中真实dom还没有被渲染,但可以访问到数据了,在这个函数里可以进行初识化事件的绑定,ajax请求。

挂载阶段

③beforeMount

在挂载开始之间被调用

这个阶段钩子函数和created基本一致,可以进行初识化事件绑定,ajax发送,但dom还没被渲染出来

④mounted

实例被挂载完成后调用

数据挂载完毕,真实dom元素也已经被渲染出来了,函数内部可以做一些实例化相关的操作

更新阶段

⑤beforeUpdate

在数据发生改变后,在dom被更新之前调用

数据改变时,这个钩子函数获取dom的内容是更新前的内容,这里适合在dom被更新前访问

⑥updated

在数据更改导致的虚拟dom重新渲染和更新完毕后被调用

在这里可以获取到因diff算法比较差异得出来的真实dom了。

销毁阶段

⑦beforeDestroy

实例销毁之前调用。

在这一步实例还是可用的,可以做一些善后工作,清除一些初始化事件,定时器

⑧destroy

在这一步 实例完全失去活性,完全丧失功能

下面再附一张图




ionic 钩子函数 钩子函数created_vue.js


生命周期钩子函数有且不止有八个
如:
一旦组件被缓存就会多出两个:
activated 激活
deactivated

小面

在那个生命周期内调用异步请求?

大部分时候,会在created发送请求。
1)、此时data已经挂载到vue实例了,放在beforeCreate里太早,vue实例没有数据,放在mounted里太晚。
2)、放在created 中有助于一致性,因为ssr不支持 beforeMount 、mounted钩子函数。
Created的使用场景:如果组件的初始数据来自于后端,那就在created里发送请求

生命周期的作用是什么

使用vue时,用到所有功能都是围绕vue生命周期实现的,在生命周期的不同阶段调用对应的钩子函数来实现组件数据管理和DOM渲染两大重要功能

Vue3中生命周期有些更改

setup开始创建组件前
onBeforeMount组价挂载到页面之前执行onMounted组件挂载到页面之后执行onBeforeUpdate 组件更新之前
onUpdated组件更新之后
而且vue3.x生命周期在调用前需要先进行引入。除了这些钩子函数外,vue3.x还增加了onRenderTracked和onRenderTriggered函数。