vue生命周期钩子函数

本文详细介绍了Vue.js组件的生命周期,包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeUnmount及unmounted等关键钩子函数。此外,还探讨了async函数和await关键字在异步编程中的应用,强调了它们如何简化Promise的处理,使代码更加简洁,并能更好地处理错误。async/await使得异步代码更接近同步逻辑,提升了代码可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

钩子函数:在特定的生命周期会被执行的函数。

生命周期:
             四个生命阶段:
             1.创建阶段    数据劫持/代理     钩子函数:beforeCreate  created
             2.挂载阶段   模板编译成标准的html结构,并且挂载到页面上  beforeMount   mounted
             3.更新阶段    状态的改变  引起   视图的改变  beforeUpdate  updated(可以多次触发  其他只触发一次)
             4.卸载/销毁阶段  app的销毁 beforeUnmout  unmouted

<div id="app">
			<div>
				<ul>
					<li v-for="(item,index) in arr">{{item}}</li>
				</ul>
			</div>
		</div>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.2.37/vue.global.js"></script>
		<script>
			var app=Vue.createApp({
				data:function(){
					return{
						arr:[]
					}
				},
				methods: {
				},
				beforeCreate(){
					//基本上不用  this指向不清晰   数据也没有劫持
					console.log("创建前");
				},
				created(){
					//当created执行时创建阶段已经完成  data中的数据已经被劫持了
					console.log("创建完成");
					this.arr=[1,2,3,4,5,6];
				},
				beforeMount(){
					console.log("挂载前");
					//挂载前  $el还是null 因此还没有把template渲染成DOM
					console.log(this.$el);//null
				},
				mounted(){
					console.log("挂载完成");
					//可以用于获取vue渲染出来的dom节点
					console.log(this.$el);
				},
				beforeUnmout(){
					console.log("销毁前");
				}
				
			});
			app.mount("#app");
		</script>

生命周期函数实例:

<div id="app">
			<ul>
				<li v-for="(item,index) in productList">{{item.name}}</li>
			</ul>
		</div>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.2.37/vue.global.js"></script>
		<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.27.2/axios.min.js"></script>
		<script>
			var app=Vue.createApp({
				data:function(){
					return{
						productList:[]
					}
				},
				methods: {
					
				},
				beforeCreate(){
					//基本上不用  this指向不清晰   数据也没有劫持
					console.log("创建前");
				},
				async created(){
					//当created执行时创建阶段已经完成  data中的数据已经被劫持了
					console.log("创建完成");
                    //同时也可以使用async 和await  简化promise的使用
			        //async 修饰符  配合await
					const res=await axios.get("http://www.xxx.top:8090/product/");
					this.productList=res.data.results;
				}
			});
			app.mount("#app");
		</script>

async函数定义

async函数是使用关键字声明的函数。async 是“异步”的简写,所以应该很好理解 async 用于申明一个 function 是异步的。

async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。

async 本身是一个语法糖—>语法糖:带有一定功能的关键字

  • 语法糖的作用:能够减少代码量、增加程序的可读性,从而减少程序代码出错的机会

await定义

await 的意思是等待,所以应该很好理解,await 等待某个操作完成。

作用

await关键字的作用 就是获取 Promise中返回的内容, 获取的是Promise函数中resolve或者reject的值(await 作用是获取promise.[[promiseValue]]的值)

关于await的注意点

  • await 必须写在 async 中

  • await 后是一个promise实例对象

三者的区别
promise和 async/await都是解决异步编程的一种方式,但是async/await使得异步代码看起来像同步代码。
函数前面多了一个async关键字。await关键字只能用于async定于的函数内。async函数会隐式地返回一个Promise,该promise的resolve值就是return的值。
为什么async/await更好?
使用async函数可以让代码简洁很多,不需要像Promise一样需要then,不需要写匿名函数处理Promise的resolve的值,也不需要定义多余的data变量,还避免了嵌套代码。

async/await 让 try/catch可以同时处理同步和异步的错误。在下面的示例中,try/catch不能处理JSON.parse的错误,因为它在Promise中,我们需要使用.catch,这样的错误会显得代码非常的冗余。
 


            

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值