Vue生命周期

Vue 生命周期就是Vue 实例从创建 → 挂载 → 更新 → 销毁的整个过程,官方提供了 8 个生命周期钩子函数,让你能在不同阶段执行自己的代码。


一、8 个生命周期钩子(按执行顺序)

  1. beforeCreate
  2. created
  3. beforeMount
  4. mounted
  5. beforeUpdate
  6. updated
  7. beforeDestroy
  8. destroyed

二、逐阶段解释(最实用)

1. 创建阶段(组件刚出生)

beforeCreate
  • 实例刚被创建
  • data、methods 还不能用
  • 几乎不用
created
  • data、methods 已经可以使用
  • DOM 还没生成
  • ✅ 常用:发送异步请求、获取初始数据

2. 挂载阶段(渲染到页面)

beforeMount
  • 模板编译完成
  • 还没挂载到页面
  • 几乎不用
mounted
  • 组件已经挂载到页面,DOM 生成完成
  • ✅ 最常用:操作 DOM、初始化插件、定时器、事件监听

3. 更新阶段(数据改变时)

beforeUpdate
  • 数据已经改变
  • DOM 还没重新渲染
updated
  • 数据 + DOM 都已更新完成
  • 可获取最新 DOM

4. 销毁阶段(组件消失)

beforeDestroy
  • 组件即将销毁
  • 实例还能用
  • ✅ 常用:清除定时器、移除事件监听、防止内存泄漏
destroyed
  • 组件完全销毁
  • 所有绑定失效
  • 一般不用

三、最常用的 3 个(90% 场景用这三个)

  1. created:拿数据
  2. mounted:操作 DOM
  3. beforeDestroy:清理定时器 / 监听

四、Vue2 代码示例(直接复制可用)

vue

复制代码
export default {
  data() {
    return {
      msg: "hello"
    }
  },
  
  // 1. 创建
  beforeCreate() {},
  created() {
    // 发请求拿数据 ✅
  },

  // 2. 挂载
  beforeMount() {},
  mounted() {
    // 操作DOM、初始化插件 ✅
  },

  // 3. 更新
  beforeUpdate() {},
  updated() {},

  // 4. 销毁
  beforeDestroy() {
    // 清除定时器、移除监听 ✅
  },
  destroyed() {}
}

五、Vue3 组合式 API(setup)

Vue3 setup 内部没有生命周期,需要用钩子函数:

js

复制代码
import { onMounted, onUpdated, onUnmounted } from 'vue'

setup() {
  onMounted(() => {
    // 相当于 mounted
  })
  
  onUnmounted(() => {
    // 相当于 beforeDestroy
  })
}

总结

  • 生命周期 = 组件从生到死的过程
  • 8 个钩子,记住 created、mounted、beforeDestroy 就够用
  • 作用:在合适的时机做合适的事(拿数据、操作 DOM、清理资源)
相关推荐
To_OC8 分钟前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
90后的晨仔13 分钟前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js
90后的晨仔18 分钟前
别再搞混了!uni-app 中 node_modules 和 uni_modules 到底是什么关系?
前端
kyriewen1 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
谢小飞1 小时前
大文件上传很难?学会这招,GB文件秒传不是梦
前端·node.js
一壶浊酒..2 小时前
Scrape Webpack练习
开发语言·javascript·webpack
程序员黑豆2 小时前
Windows 系统 Java 环境变量配置全攻略:解决“不是内部或外部命令”
java·前端·ai编程
To_OC2 小时前
别只拿 useRef 绑 DOM 了,搭配 Web Worker 解决页面卡顿才是真的香
前端·react.js·dom
IT_陈寒3 小时前
Vue的响应式让我原地破防,原来问题出在这
前端·人工智能·后端
子兮曰4 小时前
Bun vs Node.js 深度对决:跑分快 4 倍,真实业务只剩 3%,2026 年到底该怎么选?
前端·后端·typescript