Form

El componente Form es un formulario que permite manejar envíos de datos, con soporte para mostrar loaders, manejar deshabilitación, y ejecutar funciones tras el envío éxitoso o en caso de error.

Ejemplo

Importación

Para importar el componente Form, se puede hacer desde fenextjs

import { Form } from "fenextjs";

Parámetros

ParámetroTipoRequeridoDefaultDescripcion
idstringno''Identificador único para el formulario, útil para eventos o seguimiento.
dataanyundefinedDatos iniciales que el formulario manejará durante el envío.
onSubmitRequestProps<D, R, E, T>noundefinedFunción para manejar el envío de datos del formulario.
onAfterSubmit(data: RequestResultDataProps<R, E, T>) => voidnoundefinedFunción que se ejecuta después de un envío éxitoso del formulario.
disabledbooleannotrueIndica si el formulario está deshabilitado, bloqueando su envío.
loaderbooleannofalseMuestra un loader mientras el formulario está siendo enviado.
classNamestringno''Clase CSS para aplicar estilos personalizados al formulario.
childrenReactNodenoundefinedContenido que se renderiza dentro del formulario, como inputs o botones.

Gestión de Envío

El componente maneja el envío de datos mediante la función 'onSubmit', y permite realizar acciones adicionales mediante 'onAfterSubmit' tras el éxito o fallo en el envío.

PropiedadUsoDescripción
onSubmitManeja el envío de datos y devuelve el resultado de la operación.Función que puede incluir lógica personalizada para gestionar los datos que se envían.
onAfterSubmitEjecuta acciones después del envío éxitoso, como el seguimiento de eventos.Función opcional que recibe los datos del resultado del envío y permite manejar la lógica post-envío.

Storybook

Para ver el storybook del componente lo puede hacer con este link (opens in a new tab)

Usos

  • Uso básico
<Form data={{ field: "value" }} onSubmit={(data) => console.log(data)}>
  Enviar
</Form>
  • Formulario con deshabilitación y loader
<Form data={{ field: "value" }} disabled={true} loader={true}>
  Enviar
</Form>
  • Formulario con acción después del envío
<Form
  data={{ field: "value" }}
  onAfterSubmit={(result) => console.log("Envío éxitoso", result)}
>
  Enviar
</Form>