Los callbacks connectedCallback y disconnectedCallback
Ejecute código cuando un elemento personalizado se añade o elimina del DOM
Los callbacks connectedCallback y disconnectedCallback es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 2 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 HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
Callbacks del ciclo de vida del elemento
Los elementos personalizados exponen cuatro hooks del ciclo de vida: connectedCallback, disconnectedCallback, attributeChangedCallback y adoptedCallback. Estos reflejan los conocidos puntos de montaje, desmontaje y actualización de cualquier modelo de componentes.
connectedCallback se ejecuta al insertar el elemento
connectedCallback se ejecuta cada vez que el elemento se inserta en el árbol DOM. Este es el lugar adecuado para leer atributos, representar contenido, asociar listeners de eventos e iniciar temporizadores o suscripciones.
class Timer extends HTMLElement {
connectedCallback() {
this.start = Date.now();
this.interval = setInterval(() => this.render(), 1000);
this.render();
}
render() {
this.textContent = Math.floor((Date.now() - this.start) / 1000) + "s";
}
}Puede ejecutarse más de una vez
Si el elemento se elimina y se vuelve a insertar, connectedCallback se ejecuta de nuevo en cada inserción. La idempotencia es importante: proteja con una bandera la inicialización que solo deba realizarse una vez, o haga toda la configuración cada vez y permita que disconnectedCallback deshaga la configuración.
disconnectedCallback se ejecuta al eliminarse
disconnectedCallback se ejecuta cuando el elemento se elimina del DOM. Este es el momento de detener los intervalos, cancelar las solicitudes fetch, eliminar los escuchadores a nivel de documento y liberar cualquier recurso que, de otro modo, podría provocar una fuga.
disconnectedCallback() {
clearInterval(this.interval);
window.removeEventListener("resize", this.onResize);
}Recolección de basura y escuchadores
Un elemento que tenga un intervalo activo, un escuchador del documento o una Promise no resuelta no se recolectará aunque se haya desconectado. Empareje siempre cada suscripción creada en connectedCallback con su limpieza correspondiente en disconnectedCallback.
Reconexión después de mover un elemento
Mover un elemento con parentB.appendChild(element) primero lo elimina de parentA y después lo inserta en parentB. El navegador ejecuta disconnectedCallback y luego connectedCallback. Tenga en cuenta que, durante los movimientos, puede producirse una configuración y una limpieza transitorias.
Momento de la conexión inicial
Para un elemento escrito directamente en HTML, connectedCallback se ejecuta durante el análisis inicial, después del constructor. En este momento, los atributos ya se han analizado, por lo que leer this.getAttribute("name") aquí devuelve el valor del marcado.
Es posible que los elementos hijos aún no se hayan analizado
En un elemento con hijos declarados en HTML, es posible que los hijos aún no estén en el DOM cuando se ejecuta connectedCallback (el analizador todavía está procesando el documento). Use un MutationObserver o lea los hijos dentro de requestAnimationFrame si necesita acceder a los hijos declarados.
adoptedCallback
adoptedCallback se ejecuta cuando un elemento se mueve a un documento nuevo (normalmente mediante document.adoptNode). La mayoría de las aplicaciones nunca lo usan; resulta útil principalmente para componentes que se mueven entre iframes.
Combinación con AbortController
Un patrón limpio consiste en crear un AbortController en connectedCallback, pasar { signal: this.controller.signal } a cada addEventListener y fetch, y llamar a this.controller.abort() en disconnectedCallback para eliminarlos todos de una vez.
Evite el trabajo pesado en el constructor
El constructor se ejecuta incluso cuando el elemento se crea mediante document.createElement y nunca se inserta. Limite el constructor a establecer los valores iniciales de las propiedades; posponga el renderizado, las solicitudes y la vinculación de escuchadores hasta connectedCallback.
Comprobación de conocimientos
¿Por qué debería configurar las suscripciones y los temporizadores en connectedCallback en lugar de hacerlo en el constructor del elemento?
Resumen
connectedCallback (inserción) y disconnectedCallback (eliminación) delimitan la vida activa del elemento. Configure los escuchadores, intervalos y solicitudes en connectedCallback; elimínelos en disconnectedCallback para evitar fugas. Ambos pueden ejecutarse varias veces: use AbortController para realizar una limpieza agrupada de forma ordenada.
Preguntas frecuentes
¿La lección «Los callbacks connectedCallback y disconnectedCallback» es gratis?
Sí — el texto completo de «Los callbacks connectedCallback y disconnectedCallback» 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 HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Los callbacks connectedCallback y disconnectedCallback»?
Ejecute código cuando un elemento personalizado se añade o elimina del DOM Practicas HTML 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 HTML Academy?
No se requiere experiencia previa. HTML 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 2 de 4.
¿Cuánto tiempo toma la lección «Los callbacks connectedCallback y disconnectedCallback»?
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 HTML Academy?
Sí. Cada lección de HTML 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
- Definir elementos con customElements.define
- Los callbacks connectedCallback y disconnectedCallback
- Atributos observados y attributeChangedCallback
- Extender elementos integrados