Vue生命周期

Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。

Vue 实例有⼀个完整的⽣命周期,也就是从

开始创建、

初始化数据、

编译模版、

挂载Dom -> 渲染、更新 -> 渲染、.......

卸载

等⼀系列过程,称这是Vue的⽣命周期。钩子函数是Vue生命周期中每个阶段对外开放让程序员操作Vue的接口。Vue有8个钩子函数。

一.beforeCreate() 初始化前

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

beforeCreate(){
       console.log("beforeCreate",this.num,this.$el);
},

二.created( 初始化后 ) 

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

created() {
		//创建完毕,有data,没有el和dom节点
		console.log("**created",this.num,this.$el);
		//作用:发起ajax请求,开始定时器,监听事件(window)
		window.addEventListener('resize',this.showWin)
	},

三.beforeMount( 挂载前)

此时模板已经在内存中编译完成,但还没有被渲染至页面中(即为虚拟dom加载为真实dom),此时el存在则会显示el。在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取。

beforeMount() {
		//dom挂载前,有$el,但没有渲染数据
		//访问this.$el打印仍然是undefined是因为使用脚手架,动态更新造成的(在非脚手架状态下可以)
		console.log('beforeMount',this.$el,this);
	},

四:Mounted( 挂载后)

此时模板已经被渲染成真实DOM,用户已经可以看到渲染完成的页面,页面的数据也是通过双向绑定显示data中的数据。 这实例创建期间的最后一个生命周期函数,当执行完 mounted 就表示,实例已经被完全创建好了,此时,如果没有其它操作的话,这个实例,就静静的躺在我们的内存中,一动不动。

mounted(){
		//有dom节点,数据也渲染
		console.log('mounted挂载',this);
		console.log(this.$el.innerHTML,'mounted执行才能看到挂载DOM');
		//作用:发起ajax请求,开启定时器,监听事件-操作dom节点
	},

五.beforeUpdate(数据更新前)

更新前状态(view层的数据变化前,data中的数据已经改变)

获取DOM元素也是可以的

beforeUpdate(){
		//会执行多次
		//数据更新,dom节点也更新
		//console.log("beforeUpdate",this.num,document.querySelector("#btn").innerHTML);
	},

六.updated

数据已经更改完成,dom也重新渲染完成。页面的数据和data中的保持一致了

updated() {
		//会执行多次
		//数据更新,dom节点也更新
		//组件更新后,数据更新,视图已经更新
		console.log("beforeUpdate",this.num,document.querySelector("#btn").innerHTML);
	},

七.beforeDestroy

销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等…’)

	beforeDestroy() {
		//数据可以更新,视图已经不再更新
		//作用:移除事件监听,停止计时器,不移除依旧会执行下去
		// this.num++
		// console.log("卸载前beforeDestroy",this.num);

		clearInterval(this.stopId);//清除计时器
		window.removeEventListener('resize',this.showWin)
			
	},

八.destroyed

销毁后 (Dom元素存在,只是不再受vue控制),卸载watcher,Vue实例的事件监听,子组件。

destroyed() {
		//没有this,切断视图与vue实例的关系
		console.log('卸载后destroyed');
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值