vue3的生命周期钩子有哪些变化

264 阅读2分钟

vue3的生命周期钩子有哪些变化

在 Vue 3 中,生命周期钩子发生了一些变化,主要是为了与 Composition API 更好地集成。以下是 Vue 3 中生命周期钩子的变化和对应的 <script setup> 示例:

Vue 3 生命周期钩子的变化

  1. beforeCreatecreated
  • 在 Vue 3 中,beforeCreatecreated 被合并到了 setup 函数中。

  • setup 中直接编写的代码,相当于 created 钩子中的逻辑。

  • beforeCreate 的逻辑可以通过直接在 setup 中编写代码来实现。

  1. 其他生命周期的命名变化
  • Vue 3 中的生命周期钩子名称与 Vue 2 类似,但为了与 Composition API 保持一致,添加了 on 前缀。

  • 例如:

    • beforeMount -> onBeforeMount

    • mounted -> onMounted

    • beforeUpdate -> onBeforeUpdate

    • updated -> onUpdated

    • beforeUnmount -> onBeforeUnmount

    • unmounted -> onUnmount

  1. 新增的生命周期钩子
  • onRenderTracked:在渲染过程中追踪到响应式依赖时调用。

  • onRenderTriggered:在响应式依赖触发重新渲染时调用。

Vue 3 生命周期钩子列表

Vue 2 钩子Vue 3 钩子说明
beforeCreate被 setup 替代,直接在 setup 中编写代码。
created被 setup 替代,直接在 setup 中编写代码。
beforeMountonBeforeMount组件挂载到 DOM 之前调用。
mountedonMounted组件挂载到 DOM 之后调用。
beforeUpdateonBeforeUpdate组件更新之前调用。
updatedonUpdated组件更新之后调用。
beforeUnmountonBeforeUnmount组件卸载之前调用(Vue 2 中为 beforeDestroy)。
unmountedonUnmounted组件卸载之后调用(Vue 2 中为 destroyed)。
activatedonActivated被 <keep-alive> 缓存的组件激活时调用。
deactivatedonDeactivated被 <keep-alive> 缓存的组件停用时调用。
errorCapturedonErrorCaptured捕获子组件错误时调用。
renderTrackedonRenderTracked响应式依赖被追踪时调用(仅开发模式)。
renderTriggeredonRenderTriggered响应式依赖触发重新渲染时调用(仅开发模式)。

<script setup> 中使用生命周期钩子

<script setup> 中,可以通过从 vue 中导入生命周期钩子函数来使用它们。

<script setup>
import {
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted,
  onActivated,
  onDeactivated,
  onErrorCaptured,
  onRenderTracked,
  onRenderTriggered
} from 'vue';

// 组件挂载前
onBeforeMount(() => {
  console.log('onBeforeMount');
});

// 组件挂载后
onMounted(() => {
  console.log('onMounted');
});

// 组件更新前
onBeforeUpdate(() => {
  console.log('onBeforeUpdate');
});

// 组件更新后
onUpdated(() => {
  console.log('onUpdated');
});

// 组件卸载前
onBeforeUnmount(() => {
  console.log('onBeforeUnmount');
});

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

// 被 <keep-alive> 缓存的组件激活时
onActivated(() => {
  console.log('onActivated');
});

// 被 <keep-alive> 缓存的组件停用时
onDeactivated(() => {
  console.log('onDeactivated');
});

// 捕获子组件错误时
onErrorCaptured(() => {
  console.log('onErrorCaptured');
});

// 响应式依赖被追踪时(开发模式)
onRenderTracked(() => {
  console.log('onRenderTracked');
});

// 响应式依赖触发重新渲染时(开发模式)
onRenderTriggered(() => {
  console.log('onRenderTriggered');
});
</script>

<template>
  <div>生命周期钩子示例</div>
</template>

总结

  • Vue 3 的生命周期钩子通过 on 前缀与 Composition API 集成。

  • <script setup> 中,可以直接导入并使用这些钩子函数。

  • beforeCreatecreatedsetup 替代,无需显式定义。

更多vue相关插件及后台管理模板可访问vue admin reference,代码详情请访问github