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的生命周期钩子使代码更加模块化、易于维护,特别适合大型项目和复杂组件。
相关推荐
IT_陈寒几秒前
JavaScript 闭包陷阱:90%开发者踩过的5个坑,你中招了吗?
前端·人工智能·后端
SuperEugene6 分钟前
Vue3 Props 传参实战规范:必传校验 + 默认值 + 类型标注,避开 undefined / 类型混用坑|Vue 组件与模板规范篇
前端·javascript·vue.js·前端框架
吴声子夜歌7 分钟前
JavaScript——数组
java·javascript·算法
weixin_462901979 分钟前
ESP32电压显示
开发语言·javascript·css·python
im_AMBER9 分钟前
万字长文:编辑器集成Vercel AI SDK
前端·人工智能·react.js·前端框架·编辑器
Y君11 分钟前
面了3个人后我发现:AI用得最溜的,未必是我最想要的工程师
前端·人工智能·面试
一拳不是超人12 分钟前
2026年最值得关注的JavaScript新特性:Signals,响应式编程的下一个十年
前端·javascript·响应式编程
skiy13 分钟前
Webpack、Vite区别知多少?
前端·webpack·node.js
Luna-player16 分钟前
npm install vue-awesome-swiper@5.0.1 swiper@7.4.1安装后,我又想全删了,怎么移除
前端·vue.js·npm
大雷神18 分钟前
HarmonyOS APP<玩转React>开源教程二十:收藏功能实现
前端·react.js·开源·harmonyos