0Pricing
HTML Academy · Aula

connectedCallback e disconnectedCallback

Execute código quando um elemento personalizado for adicionado ou removido do DOM.

connectedCallback e disconnectedCallback é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

Retornos de chamada do ciclo de vida do elemento

Os elementos personalizados expõem quatro pontos de extensão do ciclo de vida: connectedCallback, disconnectedCallback, attributeChangedCallback e adoptedCallback. Eles correspondem aos conhecidos pontos de montagem, desmontagem e atualização de qualquer modelo de componentes.

connectedCallback é executado na inserção

connectedCallback é executado sempre que o elemento é inserido na árvore do DOM. Este é o local adequado para ler atributos, renderizar conteúdo, associar ouvintes de eventos e iniciar temporizadores ou assinaturas.

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";
  }
}

Ele pode ser executado mais de uma vez

Se o elemento for removido e reinserido, connectedCallback será acionado novamente a cada inserção. A idempotência é importante — proteja a inicialização que deve ocorrer apenas uma vez com uma sinalização, ou faça toda a configuração sempre e deixe disconnectedCallback desfazê-la.

disconnectedCallback é acionado ao remover

disconnectedCallback é executado quando o elemento é removido do DOM. É nesse ponto que o senhor deve interromper intervalos, abortar requisições, remover ouvintes no nível do documento e liberar qualquer recurso que, de outra forma, poderia vazar.

disconnectedCallback() {
  clearInterval(this.interval);
  window.removeEventListener("resize", this.onResize);
}

Coleta de lixo e ouvintes

Um elemento com um intervalo ativo, um ouvinte do documento ou uma promessa não resolvida não será coletado pelo mecanismo de coleta de lixo mesmo após ser desconectado. Sempre associe cada inscrição criada em connectedCallback à limpeza correspondente em disconnectedCallback.

Reconexão após uma movimentação

Mover um elemento com parentB.appendChild(element) primeiro o remove do elemento pai A e depois o insere no elemento pai B. O navegador aciona disconnectedCallback e, em seguida, connectedCallback. Planeje uma desmontagem e uma configuração transitórias durante as movimentações.

Momento da conexão inicial

Para um elemento escrito diretamente em HTML, connectedCallback é acionado durante a análise inicial, depois do construtor. Nesse momento, os atributos já foram analisados, portanto ler this.getAttribute("name") aqui retorna o valor presente na marcação.

Os filhos talvez ainda não tenham sido analisados

Para um elemento com filhos declarados em HTML, os filhos talvez ainda não estejam no DOM quando connectedCallback for acionado, pois o analisador ainda está trabalhando. Use um MutationObserver ou leia os filhos dentro de requestAnimationFrame se precisar acessar os filhos declarados.

adoptedCallback

adoptedCallback é acionado quando um elemento é movido para um novo documento, normalmente por meio de document.adoptNode. A maioria dos aplicativos nunca usa esse recurso — ele é importante principalmente para componentes movidos entre iframes.

Combinação com AbortController

Um padrão organizado: crie um AbortController em connectedCallback, passe { signal: this.controller.signal } para cada addEventListener e fetch e, em seguida, chame this.controller.abort() em disconnectedCallback para remover todos de uma só vez.

Evite trabalho pesado no construtor

O construtor é executado mesmo quando o elemento é criado por meio de document.createElement e nunca é inserido. Restrinja o construtor à definição dos valores iniciais das propriedades; adie a renderização, as requisições e a associação de ouvintes para connectedCallback.

Verificação de conhecimentos

Por que as inscrições e os temporizadores devem ser configurados em connectedCallback, e não no construtor do elemento?

Resumo

connectedCallback (inserção) e disconnectedCallback (remoção) delimitam o ciclo de vida ativo do elemento. Configure ouvintes, intervalos e requisições em connectedCallback; desfaça essa configuração em disconnectedCallback para evitar vazamentos. Ambos podem ser acionados várias vezes — use AbortController para fazer uma limpeza agrupada de forma organizada.

Perguntas Frequentes

A aula “connectedCallback e disconnectedCallback” é grátis?

Sim — o texto completo de “connectedCallback e disconnectedCallback” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “connectedCallback e disconnectedCallback”?

Execute código quando um elemento personalizado for adicionado ou removido do DOM. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “connectedCallback e disconnectedCallback”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Definindo elementos com customElements.define
  2. connectedCallback e disconnectedCallback
  3. Atributos observados e attributeChangedCallback
  4. Estendendo elementos integrados
← Voltar para HTML Academy