【学习笔记】Vue.js生命周期函数


【学习笔记】Vue.js生命周期函数

一、初始化阶段

new Vue()

Vue实例的初始化阶段中的函数只会调用1次。

1.beforeCreate()

刚开始初始化一个空的Vue实例对象,只存在一些 生命周期函数默认事件 ,其他东西都未创建
注意:data 及 methods中的数据都为空)。

2.create()

data 和 methods 都已初始化完毕。
(如果要操作 data 中的数据,或调用 methods 中的方法,最早只能在create中操作)

3.beforeMount()

Vue开始编辑模板,执行Vue中的指令,最终在内存中生成一个编译好的模板字符串。然后将模板渲染为内存中的DOM,但此时并未将模板挂载到页面中去。

4.mounted()

将内存中编译好的模板挂载到页面中。执行完 mounted 即表示Vue实例的初始化已经完成。组件脱离了创建阶段,进入到 运行/更新 阶段。

mounted()初始化显示后立即调用,可进行ajax请求,启动定时器等异步任务。
(注意:若使用定时器setInterval的辨识ID要存在于看得见的位置,如:this.xxx,或直接使用箭头函数

二、运行/更新阶段

运行/更新阶段中的函数会根据 data数据的改变 有选择性的触发 0次多次

5.beforeUpdate()

beforeUpdate() 执行的时候,data 中的数据已更新,但页面尚未和最新的数据保持同步。

6.updated()

已经根据 data中最新的数据在内存中重新渲染了内存DOM,并将内存DOM重新渲染到了页面中。
即,完成了数据从 data(Model层)–> view(视图层) 的更新。

updated() 执行的时候,页面已经和data数据保持同步了。

三、销毁阶段

vm.$destroy()
完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。
触发 beforeDestroy 和 destroyed 的钩子。
注意:在大多数场景中你不应该调用这个方法。最好使用 v-if 和 v-for 指令以数据驱动的方式控制子组件的生命周期。

7.beforeDestroy()

实例中的所有**data 和 methods,以及过滤器,指令……**都处于可用状态。还未真正执行销毁的过程。
多用来进行收尾工作,如:清除定时器等。

8.destroy()

组件已经完全被销毁,此时**data 和 methods,以及过滤器,指令……**都已不可使用。