0Pricing
React Academy · Lección

Animaciones de entrada y salida sin una biblioteca

Implemente animaciones de montaje y desmontaje controlando manualmente los tiempos de display y opacity en React.

Animaciones de entrada y salida sin una biblioteca es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

El problema del desmontaje

Cuando renderiza condicionalmente con {show && }, React elimina el elemento del DOM en el instante en que show pasa a ser false. No hay tiempo para una animación de salida porque el nodo ya ha desaparecido.

Las animaciones de entrada son fáciles; las de salida son el verdadero desafío.

Solución 1: mantenerlo montado

La solución más sencilla es no desmontarlo nunca. Mantenga el elemento renderizado y anime opacity hasta cero, además de aplicar pointer-events: none, cuando esté oculto; cuando se muestre, vuelva a establecerla en uno.

Esto permite desvanecimientos suaves en ambas direcciones, a costa de que el elemento permanezca en el DOM.

Solución 2: una máquina de estados de montaje

Para desmontarlo realmente, modele una pequeña máquina de estados con fases como mounting, mounted, unmounting y unmounted. Elimine el nodo únicamente cuando haya terminado la animación de salida.

El estado determina qué clases de animación se aplican en cada fase.

Un hook useMount

Puede encapsular la máquina en un hook personalizado, normalmente llamado useMount. Este recibe la visibilidad deseada y devuelve si el elemento debe estar en el DOM, además de su fase actual.

Los componentes se mantienen limpios porque la lógica de temporización vive en el hook reutilizable.

Pares de clases de entrada y salida

Siguiendo convenciones habituales, aplique enter y después enter-active al montar, y exit y después exit-active al eliminar. La clase base establece el estado inicial y la clase activa establece el estado final junto con una transición.

Alternar entre ambas en el fotograma correcto produce la animación.

Escuchar transitionend

Para saber cuándo termina una animación de salida, escuche el evento transitionend en el elemento. Cuando se active para la salida, cambie el estado a unmounted y elimine el nodo.

Esto vincula el desmontaje exactamente al final de la animación visual, en lugar de basarlo en un tiempo de espera estimado.

Un componente Transition reutilizable

Puede encapsular todo esto en un componente Transition que acepte una prop in y elementos hijos. Mantiene los elementos hijos montados durante su animación de salida y aplica las clases adecuadas en cada fase.

Los consumidores solo tienen que cambiar in para obtener correctamente, sin esfuerzo adicional, las animaciones de entrada y salida.

Activar correctamente la clase activa

Un detalle sutil: debe permitir que el navegador pinte la clase inicial antes de añadir la clase activa; de lo contrario, el elemento salta sin transición. Un requestAnimationFrame o un reflujo forzado entre ambas garantiza que la transición se ejecute realmente.

Esto garantiza que el navegador registre primero los valores iniciales.

Comparación con react-transition-group

La biblioteca react-transition-group proporciona los componentes Transition y CSSTransition, que implementan exactamente este patrón, incluido el ciclo de vida de las clases y la temporización del desmontaje.

Su versión manual refleja las ideas principales de la biblioteca, lo que facilita comprenderla una vez que haya creado una versión por su cuenta.

Cuándo usar una biblioteca o hacerlo a mano

Para un único desvanecimiento sencillo, el enfoque de mantener el elemento montado o un hook pequeño suele ser suficiente y evita añadir una dependencia. Para muchas transiciones coordinadas, listas con elementos que se añaden y eliminan, o secuencias complejas, una biblioteca ahorra tiempo y errores en casos límite.

Elija en función de la complejidad de animación que realmente necesite su aplicación.

Integrarlo todo

Las animaciones de salida requieren mantener vivo el elemento hasta que termine su animación, ya sea no desmontándolo nunca, mediante una máquina de estados junto con transitionend o usando una biblioteca.

Comprender estos mecanismos le permite elegir el enfoque más sencillo que satisfaga sus necesidades.

Comprobación rápida

Compruebe su comprensión de las animaciones de salida.

Resumen

Aprendió por qué las animaciones de salida son difíciles, dos soluciones —mantener el elemento montado y usar una máquina de estados de montaje—, cómo transitionend sincroniza el desmontaje y cómo crear un componente Transition reutilizable.

También vio cuándo recurrir a react-transition-group en lugar de hacerlo a mano.

Preguntas frecuentes

¿La lección «Animaciones de entrada y salida sin una biblioteca» es gratis?

Sí — el texto completo de «Animaciones de entrada y salida sin una biblioteca» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Animaciones de entrada y salida sin una biblioteca»?

Implemente animaciones de montaje y desmontaje controlando manualmente los tiempos de display y opacity en React. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Animaciones de entrada y salida sin una biblioteca»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Transiciones CSS con cambios de estado de React
  2. Animaciones CSS con keyframes en React
  3. useLayoutEffect para mediciones previas a la animación
  4. Animaciones de entrada y salida sin una biblioteca
← Volver a React Academy