一.概念
生命周期事件(钩子),组件创建,更新,销毁的过程
二.生命周期函数
1. beforecreated(){}
实例创建前执行它 在执行时,data methods中的数据都没有初始化呢
2. created(){}
此时,data methods已初始化 所以: 若要调用methods或操作data最早只能在created中执行
3. beforemounted(){}
模板已在内存中编译完成,但尚未渲染到页面中 执行的时候,页面中的元素未被真正替换过来,知识一些模板字符, eg打印的是*{{name}}*这种形式
4. mounted(){}
内存中的模板已真实挂载至页面,用户可以看见已经渲染好的页面啦 它是实例创建期间最后一个生命周期函数,如果没有后续操作,该实例会一直存在于内存中
----------------------------至此,组建创建阶段over--------------
运行阶段:
5. beforeupdated(){}
data改变时触发该函数,所以此时:界面还没更新但数据已更新 执行时,页面显示的data是旧的,没有与新数据同步~ 之后再渲染新的dom树,实现了data从model到view(视图层)的更新
6. updated(){}
执行时,页面和data同步了
这两个生命周期函数会依据data的改变有选择的执行0-无数次,最少执行0次即data从未改变
·····························接下来进入销毁阶段·······················
7. beforedestroy(){}
执行时,实例中所有的数据 methods 过滤器···都处于可用状态,还没有真正的执行销毁
8. destroyed(){}
执行时,组件已经完全销毁,数据 methods 过滤器都不可用嘞
三. 父子组件的生命周期
1. 创建过程:
父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted
2.更新过程
父beforeUpdate->子beforeUpdate->子updated->父updated
3. 销毁过程
父beforeDestroy->子beforeDestroy->子destroyed->父destroyed
······· Q: vue 在created 和mounted 这两个生命周期中请求数据有什么区别呢?
涉及到需要页面加载完成之后的数据请求就用mounted~ 因为在created阶段,视图中的HTML还没渲染呐,这个时候操作dom节点肯定找不到元素 而mounted中document.getelementById 生效啦
|