Eventos
El manejo de eventos es esencial en el desarrollo de aplicaciones web interactivas, y Svelte facilita esta tarea mediante su sintaxis intuitiva y eficiente. Esto podremos lograrlo mediante la directiva on:
.En este artículo, exploraremos las diversas formas de manejar eventos en Svelte.
Uso básico
En Svelte, el manejo de eventos se realiza directamente en la plantilla. Aquí tienes un ejemplo simple de cómo manejar un evento de clic:
En este ejemplo, la función handleClick
se ejecutará cada vez que se haga clic en el botón, incrementando el contador y actualizando automáticamente la interfaz de usuario. Al igual que estabus manejando el evento click
, podemos manejar cualquier otro evento utilizado en JavaScript.
En el caso de que no quieras relazionar el evento con una funcion, tambien es posible hacerlo in-line con funciones de flecha:
Event modifiers
En Svelte, los "event modifiers" o modificadores de eventos son funciones que puedes utilizar para personalizar el comportamiento de los eventos enriqueciendo la experiencia de manejo de eventos en tus componentes. Estos modificadores se aplican directamente en las plantillas y proporcionan una forma concisa de realizar acciones específicas en respuesta a eventos.
Aquí hay algunos ejemplos de modificadores de eventos en Svelte:
prevent
prevent
El modificador .prevent
se utiliza para prevenir el comportamiento predeterminado del evento. Por ejemplo, para prevenir el envío de un formulario al hacer clic en un botón, puedes usar:
stop
stop
El modificador .stop
detiene la propagación del evento, evitando que se propague a los elementos secundarios. Puedes usarlo para evitar que eventos de padres afecten a elementos hijos.
self
self
El modificador .self
asegura que el evento solo se maneje si se originó en el elemento al que se le aplicó el modificador. Evita que eventos de elementos secundarios se propaguen al elemento padre.
once
once
El modificador .once
garantiza que el manejador de eventos se ejecute solo una vez. Es útil cuando solo necesitas que una acción ocurra la primera vez que se produce un evento.
capture
capture
El modificador .capture
se utiliza para establecer el evento en modo de captura en lugar de burbujeo. Esto significa que el evento se manejará en la fase de captura antes de llegar al objetivo real.
createEventDispacther
createEventDispacther
createEventDispatcher
es una función proporcionada por Svelte para facilitar la comunicación entre componentes. Esta función permite a un componente enviar eventos personalizados y a otros componentes escuchar y reaccionar a esos eventos. Es una forma eficaz de lograr la comunicación entre componentes sin acoplarlos directamente.
A continuación, explicaré cómo usar createEventDispatcher
y cómo se integra en la estructura de un componente Svelte.
Uso de básico
En tu componente Svelte, puedes utilizar createEventDispatcher
de la siguiente manera:
Como puedes observar , en este ejemplo se importa createEventDispatcher
y se crea un objeto dispatch
, que envia un evento pulsado
cuando el boton es pulsado. Esto se hace desde elemento hijo y para poder capturarlo desdde elpadre hay que hacer lo siguiente:
Como propagar eventos
La propagación de eventos a través de más de dos componentes sigue la misma lógica, pero ahora necesitamos considerar la estructura de nuestra aplicación. Ahora añadiremos un 3 elevento llamado BotonBox
q englobara el componente Box
y que propagara el evento hacia +page.svelte
:
Como puedes observar, en esta caso el componente Boton
tiene la directiva on:pulsado
, pero si indicar la funcion que realizara. Esto se deve a que si no le especificamos nada, svelte propagara el evento al evento padre para asi no tener que repetir codigo.
Por supuesto, luego tendremos que capturar el evento en el componente padre:
Agregar metadatos
En Svelte, puedes agregar metadatos a un evento personalizado enviando un objeto con la propiedad detail
al método dispatch
de createEventDispatcher
. Este objeto detail
puede contener cualquier información adicional que desees enviar junto con el evento.
Aquí hay un ejemplo de cómo agregar metadatos a un evento personalizado:
En este ejemplo, la función pulsar
envía un evento personalizado llamado 'boton pulsado' junto con un objeto fecha
que contiene la fechaa actual. Estas propiedades representan los metadatos que se adjuntarán al evento.
Luego, en otro componente que escucha este evento, puedes acceder a esos metadatos en la función manejadora accediendo a la propiedad details
de el argumento event
que recibe la funcion manejadora:
Last updated