Formulario
El componente <Form>
extiende el elemento HTML <form>
para proporcionar navegación del lado del cliente al enviar y mejora progresiva.
Es útil para formularios que actualizan parámetros de búsqueda en la URL, ya que reduce el código repetitivo necesario para lograr lo anterior.
Uso básico:
Referencia
El comportamiento del componente <Form>
depende de si la propiedad action
recibe un string
o una function
.
- Cuando
action
es un string, el<Form>
se comporta como un formulario HTML nativo que usa el métodoGET
. Los datos del formulario se codifican en la URL como parámetros de búsqueda, y cuando se envía el formulario, navega a la URL especificada. Además, Next.js:- Realiza una navegación del lado del cliente (client-side navigation) en lugar de una recarga completa de página cuando se envía el formulario. Esto conserva la interfaz compartida y el estado del lado del cliente.
Propiedades action
(string)
Cuando action
es un string, el componente <Form>
soporta las siguientes propiedades:
Propiedad | Ejemplo | Tipo | Requerido |
---|---|---|---|
action | action="/search" | string (URL o ruta relativa) | Sí |
replace | replace={false} | boolean | - |
scroll | scroll={true} | boolean | - |
action
: La URL o ruta a la que navegar cuando se envía el formulario.- Un string vacío
""
navegará a la misma ruta con los parámetros de búsqueda actualizados.
- Un string vacío
replace
: Reemplaza el estado actual del historial en lugar de añadir uno nuevo a la pila del historial del navegador. Por defecto esfalse
.scroll
: Controla el comportamiento de desplazamiento durante la navegación. Por defecto estrue
, lo que significa que se desplazará al inicio de la nueva ruta y mantendrá la posición de desplazamiento para navegación hacia atrás y adelante.
Consideraciones
onSubmit
: Puede usarse para manejar la lógica de envío del formulario. Sin embargo, llamar aevent.preventDefault()
sobrescribirá el comportamiento de<Form>
como navegar a la URL especificada.method
,encType
,target
: No están soportados ya que sobrescriben el comportamiento de<Form>
.- De manera similar,
formMethod
,formEncType
yformTarget
pueden usarse para sobrescribir las propiedadesmethod
,encType
ytarget
respectivamente, y usarlos hará que se recurra al comportamiento nativo del navegador. - Si necesita usar estas propiedades, utilice el elemento HTML
<form>
en su lugar.
- De manera similar,
<input type="file">
: Usar este tipo de input cuandoaction
es un string coincidirá con el comportamiento del navegador al enviar el nombre del archivo en lugar del objeto del archivo.