Vue 3 组合式API中的生命周期钩子函数介绍

一、什么是生命周期钩子函数?

生命周期钩子函数是Vue组件在不同阶段自动调用的函数,用于执行特定的逻辑,比如初始化数据、DOM操作、清理资源等。在Vue 2中,我们通常在组件的选项对象中定义这些钩子:

复制代码
export default {
  created() {
    // 组件实例创建后执行
  },
  mounted() {
    // 组件挂载到DOM后执行
  },
  beforeUnmount() {
    // 组件卸载前执行
  }
}

而在Vue 3的组合式API中,生命周期钩子函数变成了可以在setup函数内直接调用的函数,更加灵活。

二、Vue 3组合式API中的生命周期钩子函数

Vue 3为组合式API提供了一系列对应的生命周期钩子函数,这些函数需要从vue包中导入使用。常用的生命周期钩子函数包括:

钩子函数 说明
onBeforeMount 组件挂载之前调用
onMounted 组件挂载完成后调用
onBeforeUpdate 组件更新之前调用
onUpdated 组件更新完成后调用
onBeforeUnmount 组件卸载之前调用
onUnmounted 组件卸载后调用
onActivated keep-alive组件激活时调用
onDeactivated keep-alive组件停用时调用
onErrorCaptured 捕获子组件错误时调用

三、如何使用组合式生命周期钩子函数?

1. 导入钩子函数

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

2. 在setup函数中调用

复制代码
export default {
  setup() {
    onMounted(() => {
      console.log('组件已挂载');
    });

    onUnmounted(() => {
      console.log('组件已卸载');
    });

    return {};
  }
}

这样写的好处是,生命周期钩子函数可以和响应式状态、计算属性、方法等逻辑混合在一起,形成高度内聚的代码块。

四、示例:使用onMountedonUnmounted实现计时器

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

export default {
  setup() {
    const count = ref(0);
    let timer = null;

    onMounted(() => {
      timer = setInterval(() => {
        count.value++;
      }, 1000);
    });

    onUnmounted(() => {
      clearInterval(timer);
    });

    return {
      count
    };
  }
}

这段代码展示了如何在组件挂载时启动计时器,并在组件卸载时清理计时器,避免内存泄漏。

五、总结

  • Vue 3组合式API中的生命周期钩子函数需要从vue导入使用。
  • 这些钩子函数都在setup函数内调用,方便将生命周期逻辑与组件状态紧密结合。
  • 组合式API的生命周期钩子使代码更加模块化、易于维护,特别适合大型项目和复杂组件。
相关推荐
万少2 分钟前
万少的 Claude Code 入门教程
前端·人工智能·后端
এ慕ོ冬℘゜11 分钟前
JS 前端基础高频面试题
开发语言·前端·javascript
放下华子我只抽RuiKe514 分钟前
React 从入门到生产(八):测试与部署
前端·javascript·深度学习·react.js·前端框架·ecmascript·集成学习
Dxy123931021617 分钟前
JS列表获取指定范围值的 N 种方法
开发语言·javascript·ecmascript
蜡笔小电芯21 分钟前
【Electron】第2章—BrowserWindow 与 Electron 窗口机制
前端·javascript·electron
zhangxingchao25 分钟前
AI 大模型面试核心二:微调、RAG、MCP、Agent 与工程落地
前端·人工智能·后端
ZC跨境爬虫26 分钟前
跟着 MDN 学CSS day_15:(掌握CSS背景与边框的创造性用法)
前端·css·ui·html·tensorflow
zhangxingchao27 分钟前
AI 大模型面试核心三: RAG、Agent 到 Prompt Engineering 的工程化理解
前端·人工智能·后端
Hilaku29 分钟前
从 15MB 减到 800KB,一行 ffmpeg 解决3D 渲染卡顿问题
前端·javascript·程序员
彦为君30 分钟前
JavaSE-11-ByteBuffer(NIO核心组件)
java·开发语言·前端·数据库·后端·spring·nio