Aprender Vuejs Componentes built-in avanzados

Módulo del curso de Vuejs

Vuejs
Vuejs
Módulo del curso
4 lecciones
4 ejercicios
Actualizado: 25/03/2026

Módulo: Componentes built-in avanzados

Este módulo forma parte del curso de Vuejs. Incluye 4 lecciones y 4 ejercicios de programación .

Vue proporciona varios componentes built-in que resuelven necesidades comunes en aplicaciones modernas: renderizar contenido fuera de la jerarquía del DOM, gestionar estados de carga asíncronos, animar transiciones de elementos y cachear componentes dinámicos. Este módulo cubre en profundidad Teleport, Suspense, Transition, TransitionGroup y KeepAlive.

Teleport

Teleport permite renderizar contenido en un nodo del DOM diferente al del componente padre, manteniendo la jerarquía lógica de Vue intacta:

<script setup lang="ts">
import { ref } from 'vue'

const showModal = ref(false)
</script>

<template>
  <button @click="showModal = true">Abrir modal</button>

  <Teleport to="#modals" defer>
    <div v-if="showModal" class="modal-overlay">
      <div class="modal-content">
        <p>Contenido del modal</p>
        <button @click="showModal = false">Cerrar</button>
      </div>
    </div>
  </Teleport>
</template>

Con el prop defer, el Teleport espera a que el destino exista en el DOM antes de montar el contenido, lo que es útil cuando el contenedor se renderiza en el mismo ciclo.

Suspense

Suspense gestiona estados de carga para componentes con setup asíncrono, mostrando un fallback mientras se resuelven:

<template>
  <Suspense>
    <template #default>
      <AsyncUserProfile />
    </template>
    <template #fallback>
      <div class="skeleton">Cargando perfil...</div>
    </template>
  </Suspense>
</template>

Transition y TransitionGroup

Transition aplica animaciones CSS al entrar y salir un elemento del DOM. TransitionGroup hace lo mismo para listas, añadiendo además animaciones de movimiento con la técnica FLIP:

<template>
  <TransitionGroup name="list" tag="ul">
    <li v-for="item in items" :key="item.id">
      {{ item.name }}
    </li>
  </TransitionGroup>
</template>

<style>
.list-enter-active, .list-leave-active {
  transition: all 0.3s ease;
}
.list-enter-from, .list-leave-to {
  opacity: 0;
  transform: translateX(30px);
}
.list-move {
  transition: transform 0.3s ease;
}
</style>

KeepAlive

KeepAlive cachea instancias de componentes dinámicos para preservar su estado cuando se intercambian:

<script setup lang="ts">
import { ref, shallowRef } from 'vue'
import TabA from './TabA.vue'
import TabB from './TabB.vue'

const currentTab = shallowRef(TabA)
</script>

<template>
  <KeepAlive :max="5">
    <component :is="currentTab" />
  </KeepAlive>
</template>

Los componentes cacheados disparan los hooks onActivated y onDeactivated en lugar de onMounted y onUnmounted, permitiendo ejecutar lógica específica al activarse o desactivarse.

Lecciones de este módulo

Explora todas las lecciones disponibles en Componentes built-in avanzados

Explora más sobre Vuejs

Descubre más recursos de Vuejs

Alan Sastre - Autor del curso

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Vuejs es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.