Vue—生命周期(钩子函数)

vue的生命周期

每个vue实例从创建到虚拟dom产生再到数据绑定监听数据渲染以及销毁的整个过程。

vue的生命周期一共有八个阶段,分别为:beforeCreate(创建前)、created(创建后)、beforeMount(挂载前)、mounted(挂载后)、beforeUpdate(更新前)、updated(更新后)、beforeDestroy(销毁前)、destroyed(销毁后)。

每个阶段做了什么?

1.beforeCreate(创建前)

实例初始化之前,完成了vue实例的默认生命周期的初始化以及一些事件的初始化,此时不可以访问data和methods。

2.created(创建后)

实例初始化完成后,完成vue的数据注入以及数据监听操作,vue实例创建完毕,可以进行data数据模型和methods方法的访问。

 3.beforeMount(挂载前)

在created之后,vue会判断实例中是否含有el属性,如果没有需要手动调用vm.$mount(el),然后判断是否含有template属性,如果有template属性,将template作为模板进行编译,如果没有,则指定el外部的html作为模板进行编译。

<body>
	<div id="app">{
   
   {msg}}</div>
	<script>
		let vm=new Vue({
			// el: '#app',
			data: {
				msg: 'hello Vue'
			},
			template:'<h1>{
   
   {msg}}</h1>',
		});
        // 如果没有el属性,手动调用vm.$mount(模板标签)
		vm.$mount('#app')
	</script>
</body>

4.mounted(挂载后)

实例挂载到页面上,此时可以获取dom元素,也可以发送异步请求。完成了数据绑定操作,在其间执行了render函数,将模板进行了解析,将数据进行了动态绑定。 

5.beforeUpdate(更新前)

实例更新会触发的生命周期。数据更新时视图还没有更新,实例找到数据对应得视图进行更新。  

6.updated(更新后)     

实例更新已经完成,视图已经渲染完成。

实例需要手动销毁:vm.$destroy()

 7.beforeDestroy(销毁前)

实例销毁之前,此时仍可以访问实例对象data和methods

8.destroyed(销毁后)

实例销毁完成。完成了监听器,子组件,事件监听等的移除,销毁实力对象。不会重新编译模板

生命周期各个阶段执行次数:

生命周期创建阶段函数(beforeCreate(创建前)/created(创建后))、虚拟dom产生阶段函数(beforeMount(挂载前)/mounted(挂载后))以及销毁阶段函数在整个生命周期都只执行一次,而数据更新阶段函数(beforeUpdate(更新前)/updated(更新后))会执行0次或多次,只要数据不发生变化,这个阶段就不会执行,数据一发生改变,就会执行改变多少次执行多少次。

猜你喜欢

转载自blog.csdn.net/qq_50748038/article/details/127022692