vue的基础知识: 生命周期

前言

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。在本篇文章中,作者将会带领大家了解生命周期的各个阶段及其生命周期函数。

生命周期的四大阶段

Vue的生命周期分为创建、挂载、更新和销毁四个阶段。 话不多说,先上图

1. 创建阶段

  • beforeCreate在实例初始化之后,数据观测和事件配置之前被调用。此时,实例的属性和方法还未初始化。
  • created 在实例创建完成后被立即调用。在这一阶段,实例已经完成数据观测、属性和方法的运算,但DOM元素还未挂载。

在beforeCreate和created这两个阶段,Vue实例已经初始化,但还没有进行DOM挂载。 这是执行一些数据初始化或异步操作的好时机。例如,你可以在这里发起网络请求获取初始数据:

js 复制代码
beforeCreate() {
  // 在这里进行一些初始化操作,如设置默认数据
  this.myData = 'Hello';
  
  // 也可以在这里发起网络请求
  const res = axios.get('/data')

},

created() {
  // created 阶段,实例已经创建,可以访问到 this.myData
  console.log(this.myData);
}

2. 挂载阶段

  • beforeMount在挂载开始之前被调用。在此阶段,Vue实例的模板已经编译完成,但尚未将其挂载到页面上。
  • mounted在挂载完成后被调用。此时,Vue实例已经挂载到页面上,可以进行DOM操作。

在beforeMount和mounted阶段,DOM已经生成并准备好挂载到页面上。

js 复制代码
beforeMount() {
  // 在这里可以做一些处理,但 DOM 还没有被挂载
  // 例如初始化某个 DOM 元素
},

mounted() {
  // 在这里可以访问已经挂载的 DOM 元素
  console.log('DOM 已经挂载');
}

3. 更新阶段

  • beforeUpdate 在数据更新时被调用.可以在此阶段执行一些更新前的操作。
  • updated 在数据更新完成时被调用。

在beforeUpdate和updated这两个阶段,你可以在数据更新前后 执行一些逻辑。比如,在beforeUpdate阶段可以保存一些状态,而在updated阶段可以执行一些需要依赖更新后的数据的操作:

js 复制代码
beforeUpdate() {
  // 在数据更新前保存一些状态
  this.previousData = this.myData;
},

updated() {
  // 在数据更新后执行一些操作
  console.log('数据已更新', this.myData);
  console.log('之前的数据', this.previousData);
}

4. 销毁阶段

  • beforeDestroy 在实例销毁之前被调用。在这一阶段,实例仍然完全可用。
  • destroyed 在实例销毁后被调用。在此阶段,Vue实例的所有指令都被解绑,事件监听器被移除,所有子实例也被销毁。这是执行一些清理工作的好地方。
js 复制代码
beforeDestroy() {
  // 在组件销毁前取消定时器或清理资源
  clearInterval(this.timer);
},

destroyed() {
  // 在组件销毁后,所有的事件监听器都会被移除
  // 所有的子组件也会被销毁
  console.log('组件已销毁');
}
相关推荐
echome88836 分钟前
Python 异常处理:try、else、finally 的正确搭配
开发语言·前端·python·异常处理·编程技巧
时间的情敌40 分钟前
OpenLayers 实战|Vue3 + OpenLayers 完整工程案例(加载天地图、要素、弹窗、绘制、WFS)
前端·openlayers
陈随易41 分钟前
下载神器!Motrix 停更三年后重写回归
前端·后端·程序员
前端的日常1 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
计算机魔术师2 小时前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么2 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒2 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
hunter_0762 小时前
一次 iOS 真机签名 409 的完整排查:证书、设备、描述文件为什么总是"对不上"
前端
枣把儿2 小时前
开源!公众号排版+一键发布工具懒人版
前端
2501_916007472 小时前
抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别
前端·网络协议·ios·adb·https·fiddler·wireshark