vue源码解析-生命钩子

 vue的生命周期大概分为:beforeCreate/create、beforeMount/mounted、beforeUpdate/updated、beforeDestroy/destroyedvue

各阶段发生的事以下:服务器

beforeCreate

这个钩子是在new Vue()以后触发的第一个钩子,在此阶段为数据观测阶段和event/watcher事件配置阶段,data/methods/computed/watch以上的数据均不能访问。$el/data的值都为undefined。函数

create

这个钩子在实例建立完成后发生,此阶段完成了数据观测,能够使用数据,更改数据。此时更改数据不会触发update函数,能够作一些初始数据的获取。因为视图还没出现,若是请求过多,会出现白屏现象。在此阶段没法与DOM进行交互,若是想要,能够经过vm.$nextTick来访问DOM3d

beforeMount

这个钩子完成虚拟DOM的建立,能够对数据进行更改,不会触发update。相关的render函数被调用,$el的值为虚拟的元素节点。cdn

mounted

在此钩子,虚拟的DOM节点被真实的DOM节点替换,并将其插入到DOM树中,真实的DOM挂载完毕,完成双向数据绑定,能够访问到DOM节点,能够使用$ref属性对DOM进行操做,也能够向后台发送请求,拿到返回数据。blog

beforeUpdate

这个钩子能够进一步更新状态,不会触发附加的重渲染过程。该钩子在服务器端渲染期间不被调用。生命周期

updated

这个钩子被调用时,组件DOM已经更新,能够执行依赖于DOM的操做。在大多数状况下,应该避免在此期间更改状态,由于这可能会致使更新无限循环。事件

beforeDestroy

这个钩子,实例仍然可用,能够进行收尾工做,好比:清楚计时器。此狗子在服务器端渲染期间不被调用。it

destroyed

这个钩子发生在实例销毁以后,Vue 实例指示的全部东西都会解绑定,全部的事件监听器会被移除,全部的子实例也会被销毁。io

相关文章
相关标签/搜索