【学习笔记】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,以及过滤器,指令……**都已不可使用。