【Vue】 Vue生命周期详解

每一个vue实例从创建到销毁的过程,就是这个vue实例的生命周期。在这个过程中,它经历了从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程。

 通过这张流程图已经可以清晰的看到Vue整个生命周期的过程

beforeCreate( 创建前 )

这个时候,在实例被完成创建出来,el和data都没有初始化,不能访问data、method,一般在这个阶段不进行操作。

created( 创建后 )

这个时候,vue实例中的data、method已被初始化,属性也被绑定,但此时还是虚拟dom,真实dom还没生成,$el 还不可用。这个时候可以调用data和method的数据及方法,createf钩子函数是最早可以调用data和method的,一般在此对数据进行初始化。

beforeMount( 挂载前)

此时模板已经编辑完成,但还没有被渲染至页面中(虚拟dom加载为真实dom),此时el存在则会显示el。在这里可以在渲染前进行最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取。
当vue实例中,el为挂载目标,未对el进行定义,则this.el显示undefined,但页面中存在template也能识别挂载目标,因为template可以被看成占位符。如果对其进行定义则显示<div id="app"></div>,所以,beforeMount读取不了真实的el,在mounted才能读取到真实的el,因为el只有渲染完成后才会存在。这里讲的el是真实的el。在真实的el存在前,在beforeMount中的其实是页面中的#app,是挂载的目标。
在这里插入图片描述

 在这里插入图片描述

beforeUpdate(更新前)

重新渲染之前触发,然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom利用diff算法进行对比之后重新渲染。只有view上面的数据变化才会触发beforeUpdate和updated,仅属于data中的数据改变不能触发。

updated(更新后)

数据已经更改完成,dom也重新render完成。

beforeDestroy(实例销毁前)

在这个函数内,还是可以操作实例的,但 之后会做一系列的销毁动作,解除各种数据引用,移除事件监听,删除组件_watcher,删除子实例,删除自身self等。同时将实例属性_isDestroyed置为true。

destroyed(实例销毁)

最后执行,实例被彻底销毁,Vue生命周期结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值