¿Para qué nos sirve un evento personalizado?

Los eventos, aparte de para reaccionar a cambios en los elementos o clicks en botones, también nos permiten generar un flujo de información inverso para que unos componentes notifiquen a otros de acciones que han ocurrido, como la actualización de valores, o la activación de modos especiales.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando trabajamos con frameworks orientados a componentes como Svelte, es fundamental entender cómo se maneja la comunicación entre esos componentes para construir aplicaciones web eficientes y organizadas. En este contexto, los eventos personalizados juegan un papel clave para propagar información desde componentes hijos hacia sus padres, facilitando la gestión de estados y acciones en la jerarquía de componentes.

Imaginemos una aplicación web dividida en múltiples componentes: un componente principal que organiza el estado general, y varios subcomponentes que representan partes específicas, como botones, textos o listas. Por ejemplo, en una típica lista de tareas, el componente principal podría contener un array con las tareas, y cada tarea se representaría mediante un subcomponente que recibe la información necesaria para mostrarse. Este flujo de datos, que va de arriba hacia abajo, es lo que llamamos top-down.

Sin embargo, la interacción no siempre se limita a la actualización local dentro de un componente. Pensemos en un subcomponente que representa una tarea con un checkbox para marcarla como completada. Cuando el usuario marca esa casilla, el componente puede actualizar su presentación localmente, pero a menudo necesitamos que esta acción afecte a otros componentes, como un contador que muestre cuántas tareas quedan pendientes. Aquí es donde los eventos personalizados cobran importancia.

En lugar de que el subcomponente modifique directamente el estado global o de otros componentes, lo que hace es emitir un evento hacia arriba en la jerarquía. Este evento notifica a un componente superior que algo ha cambiado, por ejemplo, que una tarea ha sido completada. De esta forma, el componente padre puede reaccionar adecuadamente, actualizando el estado global, haciendo peticiones de red o recomputando datos para reflejar los cambios en la interfaz.

Este patrón de comunicación, donde los datos fluyen de arriba hacia abajo y los eventos de abajo hacia arriba, permite mantener una arquitectura clara y modular. Los componentes hijos se encargan de emitir eventos cuando ocurre algo relevante, y los padres escuchan esos eventos para actualizar el estado o realizar acciones necesarias.

En Svelte, crear estos eventos personalizados es sencillo gracias a las primitivas que el framework nos ofrece. Podemos definir eventos propios en un componente hijo y emitirlos cuando sea necesario, para que el componente padre los capture y actúe en consecuencia. Así, mantenemos una separación clara de responsabilidades y facilitamos la gestión de la reactividad en nuestra aplicación.

Este enfoque nos ayuda a construir aplicaciones más mantenibles y escalables, donde cada componente se centra en su función específica y la comunicación entre ellos se realiza de manera controlada y eficiente mediante eventos personalizados.

Lista de reproducción
  1. 1
    ¿Qué es Svelte?
    9 minutos
  2. 2
    ¿Cómo crear un proyecto de Svelte?
    7 minutos
  3. 3
    Creando nuestro primer componente
    7 minutos
  4. 4
    Datos dinámicos y props
    7 minutos
  5. 5
    Anidando componentes
    7 minutos
  6. 6
    Capturando eventos
    7 minutos
  7. 7
    Eventos y reactividad
    8 minutos
  8. 8
    Atributos condicionales e IF
    9 minutos
  9. 9
    Bucles
    11 minutos
  10. 10
    Bloques await
    7 minutos
  11. 11
    Bind
    8 minutos
  12. 12
    bind:this
    6 minutos
  13. 13
    ¿Para qué nos sirve un evento personalizado?
    6 minutos
  14. 14
    createEventDispatcher
    6 minutos
  15. 15
    Eventos con detalles
    7 minutos
  16. 16
    Reenviando eventos
    6 minutos
  17. 17
    Ejemplo de eventos (primera parte)
    12 minutos
  18. 18
    Ejemplo de eventos (y segunda parte)
    16 minutos
  19. 19
    Modificadores de eventos
    6 minutos
  20. 20
    Fundamentos del CSS con Svelte
    9 minutos
  21. 21
    Clases condicionales
    7 minutos
  22. 22
    Estilos en línea y variables CSS
    8 minutos
  23. 23
    Estilos globales
    6 minutos
  24. 24
    Importar hojas de estilo externas
    5 minutos
  25. 25
    Reactividad experta con el operador $
    8 minutos
  26. 26
    Slots (parte 1 de 2)
    5 minutos
  27. 27
    Slots (parte 2 de 2)
    7 minutos
  28. 28
    Directivas svelte:window, svelte:head, svelte:body
    4 minutos
  29. 29
    Actualizar de Rollbar a Vite 3
    11 minutos
  30. 30
    Exportar a Web Components
    10 minutos
  31. 31
    Integrar TypeScript, SCSS, PostCSS...
    8 minutos
  32. 32
    Hasta aquí (por ahora)
    3 minutos
  33. 33
    Lo que se viene con Svelte 5
    13 minutos