Vue生命周期

简介 

总体划分:

        创建、运行、销毁
生命周期钩子=生命周期函数=生命周期事件

 执行流程图

创建周期的生命函数
    init(Events&Lifecycle)表示刚初始化了一个空的Vue实例对象,这时候只有一些默认的生命周期函数和事件,其他都未创建
     |--------》beforeCreate()
    init(Injections&Reactivity)
     |-------》created
    Has el option---N---when vm.$mount(el) is called
     |Y                        |    
    Has            template     option----N---Compile el's outerHtml as template
     |Y                                                |
    compile template into render function           |
     |----------------------------------------------|-------------》beforeMount  尚未挂在到界面
    create vm.$el and replace el with it  将内存中编译好的模板,真是替换到页面中
     |---------------------》mounted 
    mounted  如果使用插件操作DOM操作,最早也得到该阶段,到这里脱离了创建阶段,进入运行阶段
运行周期的生命函数
               /when data changes ------->beforeUpdate--->virtual dom re-render and patch -->updated--->Mounted
     mounted
               \when vm.$destroy() is called---->如果没有数据更新,这里就到了销毁周期的生命函数了
     beforeUpdate updated 会根据data的数据改变会被触发0次或者无穷次
销毁周期的生命函数
    mounted
     |--------》beforeDestroy(就已经从运行阶段,实例就进入了销毁阶段了,实例身上所有的data和methods等都处于可用状态,还没有真正执行销毁)
    destroyed-----》destroyed(当执行到这里,组件完全被销毁了,组件中所有的就被销毁了)

这里只是针对知识点的总结,具体可以参考下图,可能思路更清楚一些。

<div id="app">
	<input type="button" value="修改msg" @click="msg='no'">
	<p id="h3">{{ msg }}</p>
</div>
<script>
	 var vm = new Vue({
		el: '#app',
		data: {
			msg: 'ok'
		},
		methods: {
			show(){
				console.log('执行了show方法');
			}
		},
		//表示实例完全创建之前,执行他
		beforeCreate() {//这是第一个生命周期函数
		// 在这里调用的时候,data和methods中的数据都还没被初始化
		//    console.log(this.msg);
		//    this.show();
		},
		created() {//这是第二个生命周期函数
			// 这里data和methods中的数据已经被初始化好了
			console.log(this.msg);
			this.show();
		},
		beforeMount() {//这是第三个生命周期函数
			//表示模板已经在内存中编译完成,尚未渲染到页面中
			console.log(document.getElementById('h3').innerText);
			//在该方法执行的时候,页面的元素还未被真正替换回来,只是之前的模板字符串
		},
		mounted() {//第四个生命周期函数
			//是实例创建的最后一个函数,此时已经创建好了,如果没有其他操作,那么这里就创建完成了
			//表示内存中的数据已经渲染到页面中
			console.log(document.getElementById('h3').innerText);
		},

		//接下来是运行中的两个数据
		beforeUpdate() {//数据肯定被更新了
			//当执行该方法的时候页面中显示的数据还是旧的,页面还未和最新的数据保持同步
			console.log('beforeUpdate-界面上元素',document.getElementById('h3').innerText);
			console.log('beforeUpdate-data.msg:',this.msg);
		},
		updated() {
			//当执行该方法的时候页面中显示的数据还是旧的,页面还未和最新的数据保持同步
			console.log('updated-界面上元素',document.getElementById('h3').innerText);
			console.log('updated-data.msg:',this.msg);
		},
	 });
</script>

以上是针对VueJs的生命周期知识点的介绍以及示例代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值