Vue —— 生命周期函数

参考文章:https://www.jianshu.com/p/672e967e201c

1. beforeCreate:创建前

在实例初始化之后,数据观测和事件配置之前被调用。此时的组件的选项对象还未创建,eldata还未创建。因此无法访问methodsdatacomputed等上面的方法和数据。

2. created:创建后

实例已经创建完成之后被调用。在这一步,实例已完成以下配置:数据观测、属性和方法的运算,watch/event事件回调,完成了data 数据的初始化,el没有。 此时挂载阶段还没有开始,$el属性不可见,可访问this

3. beforeMount:挂载前

挂载之前被调用,相关的render函数首次被调用(虚拟DOM),实例已经完成以下配置:编译模板、data里面的数据和模板生成html,完成el和data的初始化。但此时还未挂载在页面上。

4. mounted:挂载完成

挂载完成时调用。把模板的HTML渲染到HTML页面上,此时可以做一些ajax操作。mounted只会执行一次

5. beforeUpdata:更新前

在数据更新前被调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更新状态,不会触发附加的重新渲染过程。

6. updated:更新后

在由于数据更改导致虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,故可以执行依赖于DOM的操作。应避免在该期间更改状态,可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。

7. beforeDestroy:销毁前
  1. 在实例销毁之前调用,实例仍然完全可用
  2. 这一步还可以用this来获取实例,
  3. 一般在这一步做一些重置的操作,比如清除掉组件中的定时器 和 监听的dom事件
8. Destoryed:销毁后

在实例销毁之后调用。调用后,所以的事件监听器会被移出,所有的子实例也会被销毁,该钩子在服务器端渲染期间不被调用

提几点有关生命周期的注意点:
  • ajax最好放到created中,因为此时已经可以访问this了,data初始化也已经完成,在请求到数据后可以放到data中。
  • 关于dom的操作要放在mounted里面。在之前的生命周期函数中访问domundefined(因为之前dom树还未挂载到页面上,dom元素不可访问)
  • 在不缓存组件中:进入时可以用createdmounted钩子,离开时用beforeDestroy(可访问this)和destroyed(不可访问this)钩子。
  • 在缓存了组件时,beforeDestroydestroyed并不会触发,可以使用activateddeactivated钩子。
生命周期图解(借参考文章的图~):

在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值