刚刚接触vue的时候,对于生命周期这个东西是真的懵懂,就是单存觉得这只是一种执行顺序,比如在页面初始化的需要请求的数据就需要放在created 或者mouted里面,比如页面关闭前销毁数据destroyed。一直个人觉得应该叫组件,😂,毕竟vue是单页应用。

这次重新来看vue的生命周期,一方面是对于自己的一些理解的补充,一些是基于项目中带来的一些感知。
首先,beforecreated
在这个阶段vue里面的data与dom的结构都是未定义的状态,简单的理解可以认为,一个网页的初始化阶段。
遇到过一个问题,需要在这个阶段去拿数据,🙂第一眼瞬间有点迷,data都是undefined,怎么拿?其实这里面关系到vue的一个api
,$nextTick()-->关于这个东西,是因为vue是异步更新dom的,关于这个api可以说的貌似太多了,后续了解更多的时候继续吧。目前简单的记住上面,还是就是想要在created与mouted.里面需要操作dom的时候需要将其放入在这个api中,还有有一种方式定时器,通过异步的方式获取到数据。

想要通过同步的话,需要this.$options.data,这个牵涉到框架设计原理了,个人了理解是,在这个特殊的时期之前,所有的options都会先存到vm.$options中,在beforeCreate之后,将$options里的data啦,props啦,methods啦等等一个个附到vm上,然后再触发created钩子。

还有一种就是es6的promise对象发送请求,从而得到数据。

第二个:created
在这个生命周期钩子中
data已经出来了,但是dom结构依然没有定义好,那么就是说,有数据没元素节点,那么肯定不能渲染界面的

第三个:beforemouted
在这个时间点,界面的dom元素已经生成了。但是数据data是准备渲染的一个阶段,所以这个时间渲染界面不存在的,

第四个:mouted
这个时间点之前,元素也有了,数据也有了,那么,这个时间做的就是将数据data挂在dom上,就可可以渲染了。

第五个:beforeUpdate
这个时间点,页面已经初步渲染好了,但是数据被更新,所以需要重新渲染,重新获取到data,再重新挂在dom元素上。所在在这个阶段,需要对数据做啥处理都可以,但是大多数时候,常常就在mouted里面就做了。

第六个:Updata阶段
在这个阶段,数据更新完了,dom重新渲染也会完成。

第七个:beforeDestroy
调用实例的destroy( )方法可以销毁当前的组件,在销毁前,会触发beforeDestroy钩子,
销毁前还可使得视图发生变更

第八个:destroyed
成功销毁之后,会触发destroyed钩子,此时该实例与其他实例的关联已经被清除,它与视图之间也被解绑。
此时在操作实例视图也不会再发生变更。

那么,说完了生命周期,大概总结一些诺
第一个阶段,啥也没有都是在准备
第二的时候,开始有data
第三个阶段,开始生成dom元素
第四个阶段,就data挂到dom元素上
第五六个阶段,更新的数据的时候用到
第七八个阶段,销毁遇见(页面)的时候用到

一般数据请求放在第一个前四个阶段
根据实际而定吧。


kkw凯凯王
42 声望2 粉丝