The Daily Commit · Edición de sección Portada PHP AI Dev EN DE FR ES

The Php Times

Lecturas — Ecosistema

Inertia.js 3.7 permite que los formularios cancelen sus propios envíos


Inertia.js v3.7.0 añade al componente <Form> un atributo cancelOnUnmount y un método cancel para abortar un envío en curso al desmontar el formulario o bajo demanda.

LARAVEL NEWS, 29 de agosto de 2026 seleccionado por Sönke

usePoll ahora devuelve un estado reactivo de polling. La versión también corrige la pérdida de once props en visitas instantáneas, evita que la navegación cancele visitas asíncronas hacia otras páginas y arregla tres fallos en los adaptadores de React, Vue y Svelte.

Inertia.js v3.7.0, publicada el 31 de agosto de 2026, dota al componente <Form> de dos formas nuevas de detener una petición que sigue en curso. El atributo cancelOnUnmount, disponible en los adaptadores de Vue, React y Svelte, cancela automáticamente el envío cuando el formulario se elimina de la página, por ejemplo cuando se cierra un modal a mitad de una subida. Por defecto vale false, así que los formularios existentes mantienen su comportamiento actual. Además, ahora se expone un método cancel a través de las slot props, la ref del componente y el contexto del formulario en los tres adaptadores, lo que permite añadir un botón de cancelar explícito junto al botón de envío. Para que esto funcione, se modificó el manejo interno de peticiones para que el callback onCancelToken quede inactivo en cuanto llega una respuesta, evitando que se dispare un evento onCancel después de onSuccess en el patrón habitual donde un envío exitoso cierra el modal padre del formulario.

Upload.vue
<Form action="/avatar" method="post" cancel-on-unmount>
 <input type="file" name="avatar" />
 <button type="submit">Upload</button>
</Form>

El hook usePoll, que antes solo devolvía las funciones start y stop, ahora también devuelve un valor reactivo polling que indica si el sondeo está activo, inicializado a partir de la opción autoStart (true por defecto). En Vue es un Ref<boolean>, en React usa useState, y en Svelte el hook se trasladó a un archivo .svelte.ts respaldado por $state, lo que obliga a los usuarios de Svelte a mantener intacto el objeto devuelto en vez de desestructurarlo para conservar la reactividad.

Se corrigieron dos fallos a nivel de enrutador. Las once props, que se resuelven una sola vez y se guardan en caché en el cliente, perdían su valor al combinarse con visitas instantáneas que muestran una página provisional antes de que termine la petición real. El enrutador ahora traslada la once prop recordada y su entrada de registro a la página provisional, salvo que la visita aporte su propio valor. La lógica de cancelación también era demasiado amplia: navegar a una página nueva cancelaba también visitas asíncronas independientes dirigidas a otras páginas. La cancelación ahora comprueba el origen y la ruta de la petición, de modo que solo se cancelan las peticiones ligadas a la página que se abandona, como deferred props, partial reloads, router.reload() y los polls, mientras que las visitas asíncronas hacia otras páginas terminan de ejecutarse.

Tres correcciones adicionales: el adaptador de React mostraba props obsoletas tras duplicar una pestaña en Chrome o Firefox, lo que dispara una restauración de navegación back_forward (PR #3196); replaceProp(), appendToProp() y prependToProp() ya no clonan en profundidad todo el objeto de props, evitando renderizados innecesarios y coste de copiado, una contribución de Svyatoslav Kryukov (PR #3194); y <Form> ya no lanza un TypeError en React cuando un evento input se dispara sobre un elemento de formulario ya desmontado, una primera contribución de Niek Nijland (PR #3203). La actualización se instala vía npm, por ejemplo npm install @inertiajs/vue3@^3.7.0, con los paquetes equivalentes para los adaptadores de React y Svelte.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

← Ecosistema — Page B1

"All the Code That's Fit to Ship" · The Daily Commit · Edición de pantalla · Información legal · Política de privacidad