vue的生命周期
通过new Vue() 创建vue实例,vue的生命周期便拉开了序幕
beforeCreate
首先会执行beforeCreate钩子函数。此时的vue实例只是一个空壳,还未挂载DOM元素,无法访问到data和真实的dom,一般不做操作。
vue实例挂载元素$el和数据对象data都为undefined,还未初始化。
created
这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数和不会触发其他钩子函数,一般可以在这里做初始数据的获取。
vue实例数据data有了,$el还没有。
beforeMount
在这个函数中虚拟dom已经创建完成(编译模板,把data里面的数据和模板生成虚拟dom),这里也可以更改数据,不会触发updated,不会触发其他的钩子函数。
vue实例的$el和data都初始化了,但还是挂载之前的虚拟dom节点。
mounted
在这个函数调用时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了,可以在这里操作真实dom等事情。
beforeUpdate
当组件或实例的数据更改之后,会立即执行beforeUpdate,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染。
updated
当更新完成后,执行updated,数据已经更改完成,dom也重新render完成,可以操作更新后的虚拟dom。
beforeDestroy
当通过某种方式调用$destroy
方法后,立即执行beforeDestroy函数做一些善后工作,如清除计时器、清除非指令绑定的事件等。
destroyed
组件的数据绑定、监听等去掉后只剩下dom空壳,此时执行destroyed。当然,也可以在这里完成上述操作。
原文:https://www.jb51.net/article/145668.htm
通过new Vue() 创建vue实例,vue的生命周期便拉开了序幕,首先会执行beforeCreate钩子函数。此时的vue实例只是一个空壳,还未挂载DOM元素,无法访问到数据和真实的dom,一般不做操作。