当前位置: 首页 > news >正文

VUE的8个生命周期

在Vue.js中,生命周期是Vue组件从创建到销毁的一系列钩子函数,允许开发者在这些特定阶段执行代码。这些生命周期钩子提供了对组件状态变化的直接访问,使得开发者可以在组件的不同阶段执行特定的操作,如数据获取、DOM渲染、组件更新等。

Vue 2.x 和 Vue 3.x 的生命周期钩子有所不同,但基本的理念是一致的。这里我们主要介绍Vue 2.x的常见生命周期钩子,因为Vue 3.x在大多数情况下使用了相同的命名和概念,但引入了Composition API,这可能会影响一些生命周期的使用方式。

Vue 2.x 生命周期钩子

  1. beforeCreate:在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

  2. created:在实例创建完成后被立即调用,此时已完成数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段(DOM 挂载)前的 data.property 和 methods 中的 methods 无法访问。

  3. beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。该钩子在生成的 HTML 挂载到页面之前被调用。

  4. mounted:el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果根实例挂载了一个文档内元素,当 mounted 被调用时,代表已经进入了可交互阶段。

  5. beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。

  6. updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用此钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此阶段更改状态,因为这可能会导致更新无限循环。

  7. beforeDestroy:在实例销毁之前调用。在这一步,实例仍然完全可用。

  8. destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

Vue 3.x Composition API

虽然Vue 3.x引入了Composition API来替代Options API,但它并没有改变生命周期的概念或名称。Vue 3.x的生命周期钩子仍然是beforeCreatecreatedbeforeMountmountedbeforeUpdateupdatedbeforeUnmount(代替beforeDestroy)、unmounted(代替destroyed)。

使用Composition API时,你可以通过onBeforeMountonMountedonBeforeUpdateonUpdatedonBeforeUnmountonUnmounted等函数来访问这些生命周期钩子,它们是响应式引用的一部分,允许你在setup函数中直接使用它们。例如:

let app = new Vue({el: "#app",data: {message: '提示消息',},beforeCreate() {console.log("创建之前", this.message);},created() {console.log("创建完毕", this.message);},beforeMount() {console.log("挂载之前");},mounted() {console.log("挂载完毕", this.$el);},beforeUpdate() {console.log("更新之前");},updated() {console.log("更新完毕");},beforeDestroy() {console.log("销毁之前");},destroyed() {console.log("销毁完毕");}});

通过使用这些生命周期钩子,你可以精确控制组件在各个阶段的执行逻辑,从而更好地管理组件的行为和状态。

http://www.xdnf.cn/news/1284661.html

相关文章:

  • 将黑客拒之物联网网络之外的竞赛
  • Openlayers基础教程|从前端框架到GIS开发系列课程(24)openlayers结合canva绘制矩形绘制线
  • Etcd客户端工具Etcd Workbench更新了1.2.0版本!多语言支持了中文,新增了许多快捷功能使用体验再次提升
  • Linux中Apache与Web之虚拟主机配置指南
  • 【门诊进销存出入库管理系统】佳易王医疗器械零售进销存软件:门诊进销存怎么操作?系统实操教程 #医药系统进销存
  • sqli-labs通关笔记-第44关 POST字符型堆叠注入(单引号闭合 手工注入+脚本注入3种方法)
  • 「数据获取」中国高技术产业统计年鉴(1995-2024年)(获取方式看绑定的资源)
  • 文字转语音 edge_tts
  • Docker概述与安装Dockerfile文件
  • 大数据技术入门精讲(Hadoop+Spark)
  • 【密码学】9. 可证明安全
  • 链动 3+1 模式:重构商业增长逻辑的新引擎
  • Mac M1探索AnythingLLM+Ollama+知识库问答
  • 支持任意 MCP 协议的客户端
  • 数据可视化交互深入理解
  • 最终章【1】Epson机器人篇
  • 如何提升需求分析能力
  • maven项目打包成sdk后在别的项目使用
  • 企业级高性能WEB服务器Nginx
  • 编程技能:递归
  • B 树与 B + 树解析与实现
  • SSE流式输出分层与解耦、用户自动结束语错误处理
  • 【13-向量化-高效计算】
  • 【Redis的安装与配置】
  • 高性能Web服务器
  • CSS预处理器之Sass全面解析与实战指南
  • HTML应用指南:利用GET请求获取全国一加授权零售店位置信息
  • C5.3:发射极偏置和LED驱动电路
  • 【07-AGI的讨论】
  • 使用纯NumPy实现回归任务:深入理解机器学习本质