¿Alguna idea de por qué el modificador once no funciona en el envío de formularios en Svelte?
En el siguiente ejemplo:
<form action="./" on:submit|preventDefault|once={() => alert('You submitted the form')}> <button type="submit">Save</button> </form>cuando envío el formulario por primera vez, veo la alerta, pero después de eso, cuando envío, la página se actualiza, como un envío de formulario normal.
(Probé con el botón en: hacer clic - on:click|preventDefault|once... - pero obtuve el mismo resultado).
Parece que 'una vez' está funcionando, pero después de ejecutarse y eliminarse, el comportamiento de envío predeterminado del formulario parece estar activo nuevamente.
No se pudo encontrar ninguna información si es posible deshabilitar este agente de escucha de otra forma que no sea agregando un agente de escucha de envío con preventDefault.
Pero de esta manera, al agregar un segundo oyente que solo evita el valor predeterminado, puede ver que 'once' solo se ejecuta una vez -> REPL
<script> function submitOnce() { console.log('this logs once') // put logic here you want to execute once } function handleSubmit() { // console.log('this logs with every submit') // this prevents default submit behaviour } </script> <form on:submit|preventDefault={handleSubmit} on:submit|once={submitOnce}> <button>Submit</button> </form> simplemente se puede reemplazar por on:submit|preventDefault={() => {}}