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的生命周期钩子使代码更加模块化、易于维护,特别适合大型项目和复杂组件。
相关推荐
a1117763 分钟前
网页版「MATLAB」开源
前端·开源
JianZhen✓10 分钟前
解决SPA发版旧版本残留+动态路由打包失效的完整方案(附落地代码)
前端·状态模式
计算机魔术师13 分钟前
Dario Amodei 发文呼吁放缓前沿 AI 开发后各方表态汇总
前端
anyup18 分钟前
仍然是简单一句话,uView Pro Starter 一键清理 Skill 发布
前端·人工智能·uni-app
福兮说1 小时前
纯前端把图片压缩到指定体积:canvas.toBlob 配合二分查找
前端·javascript·canvas·图片处理
是立不是利1 小时前
CSS 入门与进阶:从选择器到响应式布局的完整指南
前端·css
镭立智能制造1 小时前
电线电缆换线频繁?MES系统如何缩短换线时间40%
前端·制造
志尊宝1 小时前
Vue3 零基础每日笔记(018):按键与鼠标修饰符——回车搜索、Ctrl+S 保存这样写
javascript·vue.js·笔记
Amos_Web2 小时前
Rspack 源码解析(五):CodeGenerationPass 与模块代码生成
前端·前端框架·源码阅读
八荒启·交互动画2 小时前
Web特效06——WebGL深挖:顶点着色器和片元着色器到底在干什么
前端·网页特效·八荒启-交互动画·八荒启