Eventos y reactividad

Los eventos habilitan una característica muy interesante de este tipo de frameworks: la reactividad. Con la reactividad se puede hacer que automáticamente los componentes actualicen su presentación en el momento en el que se producen modificaciones, por ejemplo, cuando un evento de teclado o de ratón se dispara.

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.

La reactividad es un concepto fundamental en el desarrollo de interfaces modernas, y Svelte nos ofrece una forma muy sencilla y directa de aprovecharla para que nuestra aplicación responda automáticamente a los cambios en los datos. Cuando interactuamos con elementos como campos de texto, queremos que la interfaz se actualice en tiempo real, reflejando lo que el usuario está haciendo sin necesidad de recargar o refrescar manualmente.

Para entender mejor cómo funciona esto en Svelte, podemos empezar por gestionar eventos. En particular, el evento keyup es muy útil porque se dispara cada vez que soltamos una tecla después de presionarla. Esto nos permite capturar el momento exacto en que el usuario ha modificado el contenido de un campo de texto.

Imaginemos que tenemos un input de tipo texto con un placeholder que invita a introducir un nombre. Para capturar lo que el usuario escribe, añadimos un manejador de eventos con on:keyup que llama a una función, por ejemplo handle. Esta función recibe un parámetro que representa el evento en sí, y dentro de este objeto podemos acceder a mucha información útil, como la tecla que se ha pulsado o el elemento que disparó el evento.

<script>
  let nombre = "";

  function handle(event) {
    const valor = event.target.value;
    nombre = valor;
  }
</script>

<input type="text" placeholder="Pon aquí tu nombre" on:keyup={handle} />

<p>Hola {nombre}</p>

En este código, cada vez que el usuario suelta una tecla, la función handle se ejecuta y actualiza la variable nombre con el valor actual del input. Gracias a la reactividad de Svelte, al cambiar nombre, el párrafo que muestra Hola {nombre} se actualiza automáticamente, reflejando en tiempo real lo que el usuario está escribiendo.

Además, podemos aprovechar esta reactividad para mostrar información derivada, como el número de caracteres que el usuario ha introducido. Esto es muy común en aplicaciones que limitan la longitud del texto o simplemente quieren dar feedback inmediato.

<p>Tu nombre tiene {nombre.length} caracteres</p>

Así, conforme escribimos, el contador se incrementa o decrementa sin que tengamos que hacer nada extra.

Es importante destacar que el objeto evento que recibimos en la función handle no es exclusivo de Svelte, sino que proviene de la API estándar del DOM. Esto significa que podemos acceder a propiedades como event.target, que apunta al elemento que disparó el evento, y a event.key o event.keyCode para saber qué tecla se pulsó.

Este enfoque nos permite construir interfaces muy dinámicas y reactivas con poco código, aprovechando la capacidad de Svelte para detectar cambios en variables declaradas con let y actualizar la interfaz en consecuencia.

En resumen, la reactividad en Svelte consiste en que cuando modificamos una variable que está vinculada a la interfaz, esta se actualiza automáticamente. Al combinar esto con la gestión de eventos, podemos crear experiencias de usuario fluidas y en tiempo real, como un saludo que cambia mientras escribimos o un contador de caracteres que se actualiza al instante.

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