✍🏻记与vue生命周期⏱️的一次邂逅(短文📖)

引言

第一次听到vue的生命周期,发现自己一无所知,所以我决定写一篇文章记录下来,便于以后复习。

Vue 的生命周期是vue的核心知识点之一,不仅是开发中频繁涉及的内容,也是面试中的常见问题。


vue的生命周期是什么🤔

与其说是vue的生命周期,不如说是vue组件的生命周期。在 Vue 中,每个组件都有自己的生命周期,类似于生命的起承转合。组件从被创建,经历数据初始化,挂载,更新,最后被销毁。


vue生命周期的四个阶段和执行顺序

先整体介绍,后文有进一步说明。

四个阶段,每个阶段都有两个钩子函数:

生命周期之间的关系

  • 创建阶段负责初始化实例。
  • 挂载阶段将实例与 DOM 关联。
  • 运行阶段处理数据变化的响应。
  • 销毁阶段确保资源得到妥善释放。

这些钩子函数的 this 上下文绑定到组件实例,因此开发者可以方便地访问组件的数据和方法。 生命周期方法不能使用箭头函数来定义(如 created: () => {}),否则会导致 this 指向问题,无法正确访问 Vue 实例。

拓展之钩子函数🪝:

Vue 组件在不同生命周期阶段自动调用的特殊方法,用于在组件创建、更新和销毁的过程中执行特定逻辑。

执行顺序,vue实例从创建到销毁的全过程:


详细解析各个生命周期阶段

1. 创建阶段

创建阶段是 Vue 实例初始化的过程,主要完成数据观察、方法绑定等。

  • beforeCreate
    触发时机 :实例初始化后,但数据和方法尚未可用。
    用途:常用于插件初始化或全局变量设置。
javascript 复制代码
export default {
  beforeCreate() {
    console.log('beforeCreate: 数据和方法还未初始化');
  }
};
  • created
    触发时机 :实例初始化完成,数据和方法已可用,但 DOM 尚未挂载。
    用途:常用于初始化数据或调用后端接口。
javascript 复制代码
export default {
  data() {
    return { message: '' };
  },
  created() {
    console.log('created: 可以访问数据和方法');
    this.message = 'Hello, Vue!';
  }
};

2. 挂载阶段

挂载阶段是将 Vue 实例与 DOM 关联的过程。

  • beforeMount
    触发时机 :模板编译完成,但还未挂载到真实 DOM 上。
    用途:可以调整数据,但不影响 DOM。
javascript 复制代码
export default {
  beforeMount() {
    console.log('beforeMount: 模板已编译,DOM 尚未更新');
  }
};
  • mounted
    触发时机 :实例挂载到真实 DOM 后。
    用途:常用于初始化第三方插件或直接操作 DOM。
javascript 复制代码
export default {
  mounted() {
    console.log('mounted: DOM 已挂载');
    this.$nextTick(() => {
      console.log('DOM 操作可以在此处完成');
    });
  }
};

3. 运行阶段

运行阶段是组件响应式数据驱动视图更新的过程。

  • beforeUpdate
    触发时机 :响应式数据变化,虚拟 DOM 更新前。
    用途:适合做更新前的数据快照。
javascript 复制代码
export default {
  data() {
    return { count: 0 };
  },
  beforeUpdate() {
    console.log(`beforeUpdate: count = ${this.count}`);
  }
};
  • updated
    触发时机 :数据变化后,虚拟 DOM 更新完成。
    用途:可以进行与更新后的 DOM 相关的操作。
javascript 复制代码
export default {
  data() {
    return { count: 0 };
  },
  updated() {
    console.log(`updated: count = ${this.count}`);
    this.$nextTick(() => {
      console.log('可以操作已更新的 DOM');
    });
  }
};

4. 销毁阶段

销毁阶段是 Vue 实例结束生命周期的过程。

  • beforeDestroy
    触发时机 :实例销毁前,数据和方法仍然可用。
    用途:常用于清理定时器或事件监听。
javascript 复制代码
export default {
  data() {
    return { timer: null };
  },
  mounted() {
    this.timer = setInterval(() => console.log('定时器运行中'), 1000);
  },
  beforeDestroy() {
    console.log('beforeDestroy: 清理资源');
    clearInterval(this.timer);
  }
};
  • destroyed
    触发时机 :实例销毁后,数据和方法已不可用。
    用途:清理收尾工作,确认实例已完全移除。
javascript 复制代码
export default {
  destroyed() {
    console.log('destroyed: 实例已销毁');
  }
};

四个阶段的八个钩子函数

生命周期钩子 常见用途 示例操作
beforeCreate 插件初始化、全局设置 初始化配置
created 数据初始化、后端接口调用 设置 data,发送网络请求
beforeMount 数据调整 最后修改数据
mounted 操作真实 DOM、初始化插件 使用第三方库,如 swiper
beforeUpdate 数据快照 日志记录
updated 操作更新后的 DOM 修改已更新的 DOM
beforeDestroy 清理资源 清理定时器、解绑事件监听
destroyed 收尾工作 确认销毁完成

结语

以上就是我暂时了解的vue生命周期,有所缺漏的地方欢迎大佬补充。🧑🏻‍💻

相关推荐
十年Java程序媛5 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
lpfasd1236 小时前
node-sass 停止维护!老项目迁移 Dart Sass 完整教程
前端·rust·sass
考研保研资料分享7 小时前
2022年马理论保研复盘:南师大原著题、首师大追问与上财选择
面试
考研保研资料分享7 小时前
2022编辑出版跨保西北大学中国史:五校面试与九月补材料
面试·职场和发展
Data analyse4568 小时前
rnweb 回放数据量太大怎么办?分片存储与断点续传的实现思路
前端·网络·算法·数据分析
xiaogai_gai8 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
环境栈笔记9 小时前
指纹浏览器 WebRTC 怎么设置?从 ICE 候选、代理出口到功能验证
前端·人工智能·后端·自动化
赵大仁9 小时前
官网性能优化实战:LCP 3.2s → 2.1s、CLS 0.107 → 0,以及被我推翻的 6 个判断
前端·性能优化·cls·lcp·core web vitals
xiancai_xianyu9 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
小羊没烦恼!10 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html