Ciclo de Vida de Componentes en Vue.js

Clase 9 de 23Curso de Vue.js: Componentes y Composition API

Resumen

¿Qué es el ciclo de vida de un componente en Vue.js?

Vue.js es uno de los frameworks más populares para el desarrollo de interfaces web dinámicas. Uno de los conceptos fundamentales que debes dominar es el ciclo de vida de un componente, que determina desde su creación hasta su eliminación, junto a las acciones que podemos realizar en cada etapa. Cada componente pasa por una serie de fases que son gestionadas por un conjunto de funciones conocidas como hooks del ciclo de vida. Esto ayuda a administrar cambios en el DOM virtual de manera eficiente y optimizada.

¿Cómo se inicializa un componente en Vue.js?

El proceso comienza con la ejecución de las funciones createApp y mount, que crean la instancia raíz de Vue.js. Durante esta etapa, se inicializan todos los eventos y las funciones del ciclo de vida necesario para cada componente. Posteriormente, el componente se inicia en un estado llamado beforeCreate. Aquí, se puede ejecutar código que preparará el terreno antes del inicio del componente, como declaración de variables o carga inicial de inspiraciones.

beforeCreate() {
    // Código a ejecutar antes de crear el componente
}

¿Qué ocurre durante la creación del componente?

Una vez que el componente entra en el estado creado, se ejecuta la función created. En este momento, la definición completa del componente ya está establecida, aunque todavía no está adjunta al DOM. Es el punto idóneo para realizar peticiones de datos o preparaciones que no requieren interacción directa con el DOM.

created() {
    // Código que se ejecuta una vez creado el componente
    // Ideal para descargar datos o ejecutar sincronizaciones
}

¿Cuándo y cómo se monta un componente al DOM?

El siguiente paso dentro del ciclo de vida es el montaje del componente en el DOM. Antes de este evento, la función beforeMount será ejecutada, permitiendo hacer ajustes finales antes de que el componente esté visible en el documento.

beforeMount() {
    // Código que se ejecuta antes de montar el componente en el DOM
}

Tras ello, el componente es finalmente montado y la función mounted se dispara, permitiéndonos realizar actividades que requieren el componente ya esté en el DOM, tales como manipulación de elementos específicos o inicialización de librerías basadas en el DOM.

mounted() {
    // Código que se ejecuta cuando el componente está montado
    // Manipulación de elementos DOM
}

¿Qué sucede cuando el componente tiene que actualizarse?

Una vez montado, el componente está en un estado reactivo y cualquier cambio en sus datos puede desencadenar una actualización. Antes de este cambio, beforeUpdate se ejecuta para permitir ajustes previos a la modificación del DOM.

beforeUpdate() {
    // Código que se ejecuta antes de actualizar el DOM
}

Tras la actualización, updated se ejecuta, donde puedes realizar operaciones post-actualización.

updated() {
    // Código que se ejecuta después de una actualización del DOM
}

¿Cómo es el proceso de desmontaje del componente?

Cuando un componente necesita ser removido, se ejecutan dos funciones importantes: beforeUnmount y unmounted. En beforeUnmount, tienes la oportunidad de limpiar recursos, cerrar conexiones o eliminar cualquier referencia vinculada al componente antes de que desaparezca completamente.

beforeUnmount() {
    // Código para la limpieza antes de desmontar el componente
}

Finalmente, unmounted marca el momento en que el componente ya ha sido desligado del DOM y te permite notificar a otros componentes o realizar limpieza adicional.

unmounted() {
    // Código final después de desmontar el componente
}

La comprensión del ciclo de vida de los componentes en Vue.js te ayudará a construir aplicaciones más eficientes y a estructurar mejor los componentes. Aprovecha estos hooks para maximizar el control sobre la interacción y manipulación de tus componentes en las etapas críticas de su ciclo de vida. ¡Continúa explorando cómo implementar y optimizar estos procesos para llevar tus habilidades al siguiente nivel!