Capturando eventos

Un componente no sería nada si no tuviese eventos, que permite capturar acciones del mundo exterior, como clicks hechos en un botón, pulsaciones de teclas, o incluso eventos propios generados internamente, para reaccionar a él y producir algún tipo de consecuencia.

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.

Gestionar eventos en Svelte es una tarea sencilla y natural que nos permite hacer nuestras aplicaciones web mucho más dinámicas e interactivas. Los eventos son esas interacciones del usuario que ocurren en el navegador, como hacer clic en un botón, cambiar el valor de un campo de texto o seleccionar una opción en un combo box. Si hemos trabajado con JavaScript tradicional, seguramente nos suenen conceptos como addEventListener o atributos como onclick.

En Svelte, la gestión de eventos se basa en la API DOM estándar, por lo que no tenemos que reinventar la rueda. La diferencia principal es que para declarar un evento usamos un atributo que comienza con on: seguido del nombre del evento. Por ejemplo, para capturar un clic en un botón, usaremos on:click. Esto es muy parecido a usar onclick en HTML, pero con la sintaxis propia de Svelte.

Para ilustrarlo, podemos crear un botón con el texto hazme click si te atreves. Al principio, este botón no hace nada, pero si le añadimos el atributo on:click y le asignamos una función, podremos ejecutar código cada vez que el usuario pulse el botón. En Svelte, el valor de este atributo se escribe entre llaves {}, donde podemos poner cualquier expresión JavaScript válida.

Una forma rápida de hacerlo es pasar una función anónima que imprima un mensaje en la consola:

<button on:click={() => console.log('me han pulsado')}>
  hazme click si te atreves
</button>

Cuando pulsamos el botón, veremos en la consola el mensaje me han pulsado. Esta es una forma muy directa, pero para mantener el código más limpio y organizado, es mejor definir la función en la sección <script> y luego pasar su referencia al evento:

<script>
  function gestionarClick() {
    console.log('me han pulsado otra vez');
  }
</script>

<button on:click={gestionarClick}>
  hazme click si te atreves
</button>

Así, cada vez que el botón se pulse, se ejecutará la función gestionarClick y veremos el mensaje correspondiente en la consola.

Los eventos que podemos gestionar en Svelte son los mismos que en la API DOM tradicional: onclick, onchange, onkeyup, onkeydown, onfocus, oncontextmenu, entre muchos otros. Para conocer todos los eventos disponibles y su comportamiento, es útil consultar la documentación de MDN sobre la API DOM.

Además, en aplicaciones más complejas, podemos gestionar eventos de formularios como onsubmit para controlar el envío y, por ejemplo, evitar que la página se recargue y manejar el envío mediante AJAX. También existe la posibilidad de crear eventos personalizados cuando la lógica de la aplicación lo requiera, aunque eso lo veremos más adelante.

Por último, en próximas lecciones profundizaremos en cómo funcionan los parámetros que reciben las funciones manejadoras de eventos, ya que hasta ahora hemos visto ejemplos sin ellos, pero entenderlos es fundamental para aprovechar al máximo la reactividad y la interacción en Svelte.

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