Open
Description
Vue 生命周期总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/后。
-
创建前/后: 在
beforeCreate
阶段,由于还未初始化,vue实例
的挂载元素el
和数据对象data
都为undefined
。在created
阶段,vue实例
的数据对象data
有了,el
还没有。 -
载入前/后: 在
beforeMount
阶段,vue实例
的$el
和data
都初始化了,但挂载之前还是为虚拟的dom
节点,data.message
还未替换。在mounted
阶段,vue实例
挂载完成,data.message
成功渲染。 -
更新前/后: 当data变化时,会触发
beforeUpdate
和updated
方法。 -
销毁前/后: 在执行
destroy
方法后,对data
的改变不会再触发周期函数,说明此时vue实例
已经解除了事件监听以及和dom
的绑定,但是dom
结构依然存在。
第一次页面加载会触发哪几个钩子?
第一次页面加载时会触发beforeCreate
, created
, beforeMount
, mounted
这几个钩子
DOM
渲染在 哪个周期中就已经完成?
DOM
渲染在mounted
中就已经完成了。
简单描述每个周期具体适合哪些场景?
生命周期钩子的一些使用方法:
-
beforecreate : 可以在此阶段加
loading事件
,在加载实例时触发; -
created : 初始化完成时的事件写在这里,如在这结束
loading事件
,异步请求也适宜在这里调用; -
mounted : 挂载元素,获取到
DOM节点
; -
updated : 如果对数据统一处理,在这里写上相应函数;
-
beforeDestroy : 可以做一个确认停止事件的确认框;
-
nextTick : 更新数据后立即操作
dom
;
在created和mounted这两个生命周期中请求数据有什么区别呢?
放在mounted
请求有可能导致页面闪动(页面dom
结构已经生成),但如果在create
生命周期当中完成则不会出现此情况