vue生命周期钩子函数(11个)

首先来一波官网的对于vue生命周期的图解。
在这里插入图片描述
这一张图对于vue的生命周期已经讲解的特别详细了,但是光靠这一张图还不足于了解它的生命周期,我们需要实践一下,介绍一下vue的钩子函数。
在这里插入图片描述

一. 组件创建前后

//1.beforeCreate
//2.created

data(){ return { a:1 },
    beforeCreate(){
        console.log(this.a)//undefined },
    created(){
        console.log(this.a)//1 }
}
	

二. vue启动前后

//3.beforeMount
// 4.mounted
这两个的意思就是,vue在beforeMount时,还不管事,也就是说,还没有渲染数据到<div id="app"><div/>里面,此时的这个组件还是空的

当mounted时,才会往<div id="app"><div/> 添加东西,也就是vue正式 
接管<div id="app"><div/>

可以获取#app的innerHTML查看差异;

beforeMount(){ console.log(document.getElementById('app').innerHTML)//空的
},
mounted(){ console.log(document.getElementById('app').innerHTML)//#app里的内容 }

三. 组件更新前后

//5.beforeUpdate 
//6.updated
当子组件里面的 视图改变 的时候触发。 
如,做一个按钮,让data里面的a++,假如 一开始a是1 
beforeUpdate返回1 
updated返回2

beforeUpdate(){
    console.log(document.getElementById('a').innerHTML)//1 },
updated(){
    console.log(document.getElementById('a').innerHTML)//2 }

再点一次 
beforeUpdate返回2 
updated返回3。。。 

四. 组件销毁前后(一般配合v-if使用)

//7.beforeDestroy
//8.destroyed
给这个子组件用v-if来控制它的销毁和创建,注意以下:v-show不行。 
子组件销毁前触发beforeDestroy 
子组件销毁后触发destroyed 
第一次会触发7.8. 
创建子组件后会触发以上的第1.2.3.4.钩子函数。

有一个问题,如果我们在子组件里写一个定时器,然后,子组件被销毁了,定时器还会执行吗? 
答案是-会的 
所以这时候就会用到了destroyed,在组件被销毁后,我们把定时器给清除就好了。

所以这两个钩子函数一般用于做性能的优化。

五. 组件激活时,未激活时

//9.activated
//10.deactivated
这两个钩子函数呢一般配合<keep-alive><keep-alive/>来使用。 
通过看 四。这个例子,你肯定知道了一个组件怎么被销毁和创建。 
但是我们知道通常一个组件是很大的,如果我们总是一直创建、销毁、创建、销毁。。。这样很不合理,而且很浪费性能。。。

这时候我们就可以用<keep-alive><keep-alive/>配合着两个钩子函数来控制组件的激活和不激活。

说一下<keep-alive><keep-alive/>,它就相当于把你的组件给缓存下来了,目的呢就是不让组件重复的渲染,然后我们通过v-if触发,子组件就不会再触发78 了,而是只会频繁的触发910 
这样性能会比78 好的多。 

六. 当捕获一个来自子孙组件的错误时被调用

//11.errorCaptured
当子孙组件报错的时候,父组件会触发这个钩子函数,并且会返回三个参数, 
第一个参数是 错误对象 
第二个参数是 报错的子孙组件 
第三个参数是 报错的子孙组件的具体哪个地方报错。(如,假如我没有定义b这个变量,但是我去console.log(b) 这一句肯定会报错,假如我把这句错误代码写在了created这个钩子函数里,那第三个参数会返回就是:created hook)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C+ 安口木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值