Skip to content
← Todas las preguntas
Principiante

¿Cuáles son los lifecycle hooks en Vue 3?

Composition APICiclo de vida

Los lifecycle hooks permiten ejecutar código en momentos concretos de la vida de un componente: cuando se crea, cuando se monta en el DOM, cuando se actualiza o cuando se destruye. En la Composition API, los registras como funciones dentro de <script setup>.

Los hooks principales

ts
import {
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted
} from 'vue'

onBeforeMount(() => {
  // El DOM todavía no está disponible
})

onMounted(() => {
  // El DOM está listo; es seguro acceder a template refs, iniciar timers, obtener datos
})

onBeforeUpdate(() => {
  // El state reactivo cambió, el DOM todavía no se ha re-renderizado
})

onUpdated(() => {
  // El DOM se ha re-renderizado con el nuevo state
})

onBeforeUnmount(() => {
  // El componente sigue siendo funcional; limpia antes de la eliminación
})

onUnmounted(() => {
  // El componente ha sido eliminado del DOM; todos los watchers han parado
})

Flujo del lifecycle

setup()

  ├── onBeforeMount
  ├── onMounted          ← DOM listo

  │   (cambios en el state reactivo)
  ├── onBeforeUpdate
  ├── onUpdated          ← DOM re-renderizado

  │   (componente eliminado)
  ├── onBeforeUnmount
  └── onUnmounted        ← limpieza completa

Qué hook usar para cada tarea

TareaHook
Obtener datos inicialesonMounted
Acceder a template refsonMounted
Iniciar un timer o listeneronMounted (limpiar en onUnmounted)
Reaccionar a cambios del DOM tras actualizaciónonUpdated
Limpiar timers, listeners, suscripcionesonUnmounted

Patrón habitual: setup y limpieza

ts
onMounted(() => {
  window.addEventListener('resize', handleResize)
})

onUnmounted(() => {
  window.removeEventListener('resize', handleResize)
})

Equivalente en Options API

Si ves código antiguo con Options API, la correspondencia es directa:

Composition APIOptions API
onBeforeMountbeforeMount
onMountedmounted
onBeforeUpdatebeforeUpdate
onUpdatedupdated
onBeforeUnmountbeforeUnmount
onUnmountedunmounted

No existe onCreated ni onBeforeCreate en la Composition API. El código que iría ahí se ejecuta directamente en setup() (o al nivel superior de <script setup>), ya que el propio setup se ejecuta en el momento de la creación.

Ver también: ¿Qué es la Composition API y en qué se diferencia de la Options API? · ¿Se puede usar await directamente en script setup?

Referencias

Publicado bajo la licencia MIT.