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

Vue 3 :生命周期钩子详解

生命周期钩子概述

生命周期钩子是在 Vue 组件各个关键阶段调用的特殊函数,允许开发者在特定时刻执行自定义逻辑。

生命周期阶段划分

Vue 3 组件的生命周期可分为四个主要阶段:

  1. 创建阶段 - 组件实例化与响应式系统初始化
  2. 挂载阶段 - 组件模板编译与 DOM 挂载
  3. 更新阶段 - 响应式数据变化与 DOM 更新
  4. 卸载阶段 - 组件销毁与资源清理

生命周期执行流程

组件创建↓
setup() 执行↓
onBeforeMount() → 模板编译完成,挂载前↓
onMounted() → 组件已挂载,可访问 DOM↓
onBeforeUpdate() → 数据变更,DOM 更新前↓  
onUpdated() → DOM 更新完成↓
onBeforeUnmount() → 组件卸载前,资源清理↓
onUnmounted() → 组件已卸载

核心生命周期钩子

创建阶段

setup() - Composition API 入口

import { ref, reactive } from 'vue'export default {setup() {// 初始化响应式数据const count = ref(0)const state = reactive({ message: 'Hello' })// 返回模板中可用的数据和方法return { count, state }}
}
  • 执行时机:组件实例创建之初
  • 主要用途:定义响应式数据、计算属性、方法等
  • 注意事项:此阶段无法访问组件实例(this)

挂载阶段

onBeforeMount() - 挂载前回调

import { onBeforeMount } from 'vue'setup() {onBeforeMount(() => {console.log('组件即将挂载到 DOM')// 此时模板已编译,但尚未挂载})
}

onMounted() - 挂载完成回调

import { onMounted, ref } from 'vue'setup() {const container = ref(null)onMounted(() => {console.log('组件已挂载到 DOM')// 可访问 DOM 元素console.log(container.value)// 适合初始化第三方库、发起数据请求initializeThirdPartyLibrary()})return { container }
}

更新阶段

onBeforeUpdate() - 更新前回调

import { onBeforeUpdate } from 'vue'setup() {onBeforeUpdate(() => {console.log('数据已变更,DOM 即将更新')// 可获取更新前的 DOM 状态})
}

onUpdated() - 更新完成回调

import { onUpdated } from 'vue'setup() {onUpdated(() => {console.log('DOM 更新已完成')// 可执行依赖于新 DOM 的操作})
}

卸载阶段

onBeforeUnmount() - 卸载前回调

import { onBeforeUnmount } from 'vue'setup() {let timerId = nullonBeforeUnmount(() => {console.log('组件即将卸载')// 清理资源:定时器、事件监听器、网络请求等if (timerId) clearInterval(timerId)window.removeEventListener('resize', handleResize)})
}

onUnmounted() - 卸载完成回调

import { onUnmounted } from 'vue'setup() {onUnmounted(() => {console.log('组件已完全卸载')// 执行最终清理工作})
}

总结

Vue 3 的生命周期钩子为开发者提供了精确控制组件行为的能力:

  • 创建阶段:使用 setup() 初始化组件状态
  • 挂载阶段:在 onMounted 中执行 DOM 操作和数据初始化
  • 更新阶段:通过 onBeforeUpdateonUpdated 响应数据变化
  • 卸载阶段:在 onBeforeUnmount 中确保资源正确释放

掌握这些生命周期钩子的正确使用方法,能够帮助开发者构建出更加稳定、高效的 Vue 应用程序。

http://www.dtcms.com/a/603102.html

相关文章:

  • 什么值得买网站模版网络设计主要是干什么的
  • Python中的内存管理:垃圾回收机制是如何工作的?
  • 贵州百度seo整站优化快速搭建展示型网站
  • wordpress 搜索引擎收录百度官方优化指南
  • 网站建设与管理期末考试题云南建设厅建设网站首页
  • 百度seo公司整站优化pageadmin和wordpress
  • 【FPGA+DSP系列】——proteus仿真DSP控制单相整流电路,4路PWM波控制晶闸管实验
  • 网站静态路径wordpress页面更新失败
  • Python __name__ 与 __main__
  • 红黑树的那些事
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(17):文法和单词-第四课
  • 免费房屋建设图纸网站有哪些重庆九龙网站建设
  • 长沙律师网站建设crm客户关系系统
  • 网站建设项目补充协议公众号怎么制作投票
  • 推荐黄的网站免费如何做网页或网站
  • 入门C语言编译器 | 从基础到进阶的C语言学习指南
  • 湘潭建设路街道网站哈尔滨有多少家网站建设公司
  • 2025 年前端性能优化技巧:提高 Web 应用程序的速度
  • 如何网站数据备份中国城乡住房建设厅官网
  • 青海省网站建设高端深圳小程序网站开发公司
  • 自学做网站一般要多久西双版纳州住房和城乡建设局网站
  • 门户网站开源成都系统网站建设
  • 怎么把网站放到服务器网站开发 页面功能布局
  • 易语言静态编译器 | 提升程序效率与可移植性的关键工具
  • 如何在工商网站做预先核名公司网站开发需要什么证书
  • 做淘宝客怎么做官方网站海口网站建设搜q.479185700
  • 网站开发一个月企业网站公司单位有哪些
  • 平面设计网站有哪些比较好如何建立本站站点
  • 基于python深度学习的经典名著推荐系统
  • SAP FICO发出商品报表分享