"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Delegação de eventos versus propagação de eventos em JavaScript

Delegação de eventos versus propagação de eventos em JavaScript

Publicado em 2024-08-26
Navegar:577

Event Delegation vs Event Propagation in JavaScript

Os desenvolvedores de JavaScript geralmente precisam gerenciar como os eventos são tratados em aplicativos da web, e dois conceitos importantes nesse contexto são delegação de eventos e propagação de eventos. A compreensão desses conceitos pode melhorar significativamente a eficiência e a capacidade de manutenção do seu código. Vamos ver o que são e como diferem.

Propagação de Eventos

A propagação de eventos descreve a maneira como um evento viaja pelo DOM depois de ter sido acionado. Existem três fases de propagação de eventos:

1. Fase de captura: O evento começa na janela e percorre os ancestrais do elemento alvo até atingir o alvo.

2. Fase alvo: O evento atinge o elemento alvo.

3. Fase de borbulhamento: O evento borbulha do elemento de destino de volta através de seus ancestrais até a janela.

Por padrão, a maioria dos eventos em JavaScript usa a fase de bolha, o que significa que quando um evento é acionado em um elemento filho, ele também é acionado em todos os seus elementos ancestrais. Você também pode lidar com eventos durante a fase de captura especificando a opção de captura.

// Capturing phase
element.addEventListener('click', function(event) {
    console.log('Capturing phase:', this);
}, true);

// Bubbling phase (default)
element.addEventListener('click', function(event) {
    console.log('Bubbling phase:', this);
});

Delegação de Eventos

A delegação de eventos aproveita a propagação de eventos para gerenciá-los com eficiência. Em vez de adicionar ouvintes de eventos a vários elementos filhos, adicione um único ouvinte de eventos a um elemento pai. Este ouvinte aproveita a bolha de eventos para lidar com eventos de seus elementos filhos.

Vantagens da delegação de eventos

1. Desempenho: Reduz o número de ouvintes de eventos, o que pode melhorar o desempenho, especialmente com um grande número de elementos.

2. Elementos Dinâmicos: Simplifica o tratamento de eventos para elementos adicionados dinamicamente, pois você não precisa anexar ouvintes de eventos a cada novo elemento.

Exemplo de delegação de evento

Considere uma lista de itens onde cada item pode ser clicado. Em vez de adicionar um ouvinte de evento de clique a cada item, você adiciona um único ouvinte ao contêiner pai.

  • Item 1
  • Item 2
  • Item 3
const list = document.getElementById('list');

list.addEventListener('click', function(event) {
    if (event.target.tagName === 'LI') {
        console.log('Item clicked:', event.target.textContent);
    }
});

Neste exemplo, o evento click em qualquer elemento li irá borbulhar até o elemento ul, que manipula o evento.

Principais diferenças

1. Propagação de eventos é sobre como um evento viaja através do DOM (captura e borbulhamento).

2. Delegação de eventos é uma técnica que utiliza propagação de eventos para lidar com eficiência com eventos em vários elementos filhos usando um único ouvinte pai.

Casos de uso

Quando usar a propagação de eventos

  • Quando você precisa realizar diferentes ações durante as fases de captura ou borbulhamento.
  • Quando você deseja gerenciar o fluxo de eventos com mais precisão.

Quando usar a delegação de eventos

  • Quando você tem muitos elementos filhos que exigem o mesmo tratamento de eventos.

  • Quando você precisa lidar com eventos para elementos adicionados dinamicamente sem reanexar ouvintes.

Conclusão

Tanto a propagação quanto a delegação de eventos são conceitos poderosos que podem tornar seu código JavaScript mais eficiente e fácil de gerenciar. A delegação de eventos, em particular, pode reduzir significativamente o número de ouvintes de eventos, melhorando o desempenho e simplificando o tratamento de eventos para elementos dinâmicos. Compreender quando e como usar esses conceitos tornará você um desenvolvedor JavaScript mais proficiente.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/mdhassanpatwary/event-delegation-vs-event-propagation-in-javascript-m9n?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3