vue.js有几个生命周期函数?

从Vue的创建到运行、销毁总是伴随着各种各样的事件,这些事件统称为生命周期,生命周期钩子是别名。

vue有8种生命周期函数:

钩子函数触发的行为在此阶段可以做的事情
beforeCreadtedvue实例的挂载元素$el和数据对象data都为undefined,还未初始化。加loading事件
createdvue实例的数据对象data有了,$el还没有结束loading、请求数据为mounted渲染做准备
beforeMountvue实例的$el和data都初始化了,但还是虚拟的dom节点,具体的data.filter还未替换。..
mountedvue实例挂载完成,data.filter成功渲染配合路由钩子使用
beforeUpdatedata更新时触发
updateddata更新时触发数据更新时,做一些处理(此处也可以用watch进行观测)
beforeDestroy组件销毁时触发
destroyed组件销毁时触发,vue实例解除了事件监听以及和dom的绑定(无响应了),但DOM节点依旧存在组件销毁时进行提示

生命周期函数分类:

创建阶段的生命周期函数

首先通过var vm = new Vue({}) 创建一个Vue实例对象,vm是一个空的Vue实例对象

  • beforeCreate():在beforeCreate()生命周期函数执行的时候,vue对象中的data和methods中的数据没有初始化,在beforeCreate()中无法访问data数据和methods中的方法;

  • created():此时data数据和methods中的方法已经初始化好了,也就是说,created()函数是最早能够访问data数据和methods中的方法的生命周期函数;

  • beforeMount()函数之前,Vue开始编译模板,把Vue代码中的指令进行执行,最终在内存中生成一个编译好的模板字符串,然后把这个模板字符串渲染为内存中的DOM。注意:此时只是把模板字符串渲染在内存中,还没有真正挂载在页面上;

  • beforeMount():此函数执行的时候,模板已经在内存中编译好了,只是没有渲染到页面上,页面中还是旧的模板字符串,没有被真正的数据值替换过来;

  • mounted():此函数执行时,模板字符串已经真正的挂载在页面中,用户可以看到渲染好的页面,注意:mounted是创建阶段的最后一个生命周期函数,当mounted执行完,表示实例已经创建好了。此时组件脱离创建阶段,进入运行阶段

运行阶段的生命周期函数

  • beforeUpdate():此函数执行时,界面数据还没有更新,但是data中的数据已经更新了,页面尚未和内存中的data同步;

    先根据data中最新的数据在内存中重新渲染一份新的DOM树,然后把最新的DOM树渲染到真正的页面中去,就完成了从data(Model)——>view的更新;

  • updated():此函数执行时,页面data已经和内存中保持同步了,都是最新的

销毁阶段的生命周期函数

  • beforeDestory() :当执行beforeDestory()函数时,Vue实例已经从运行阶段进入销毁阶段,当执行beforeDestory()时候,data和methods、指令、过滤器还处于可用状态,没有被销毁;

  • destoryed():当执行destoryed()函数时候,组件已经完全销毁,所有数据都不可用;

更多web前端开发知识,请查阅 HTML中文网 !!

以上就是vue.js有几个生命周期函数?的详细内容,更多请关注易知道|edz.cc其它相关文章!

推荐阅读