A hook that provides access to the state and data of Forms on the page. This
hook is a companion for Form and allows you to create fancy
loading screens.
import { useFormSubmit } from 'next-runtime/form'; function MyPage() { const form = useFormSubmit('create-user'); if (form.isLoading) { return <p>{`Currently submitting ${form.values.name}`}</p>; } return ( <Form method="post" name="create-user"> <input name="name" /> <button type="submit">submit</button> </Form> ); }
#Options
useFormSubmit takes the following options:
name string
The name of the form to connect to. As form names are optional, so is this option. That being said, we strongly recommend you to provide a name, as unnamed forms might cause issues in later stages of your project.
#Returns
useFormSubmit returns an object holding the following properties:
status string
The status of this form. It will be one of the following options, and defaults to
idle.idle: if the form is at rest and hasn't yet been submitted.submitting: the form is submitted, and waiting for response from the server. Form values are available undervaluesandformData.routing: the server returned aredirect, we're now rerouting the client.error: the submission resulted in an error. Error details are stored undererror.success: the submission has been completed, and we got a response code in the 200 range, or have been redirected. Response data is stored underdata.
data: Record<string, unknown>
The response data returned in case of a successful submission.
error FetchError | Error
In case of client side errors, this holds the standard
Errortype, with a name and message. In case of server-side errors, aFetchErroris available. AFetchErrorextends the defaultErrorclass with the following properties:messagestring- the error status code and message formatted as[status]: messagestatusnumber- the response status codestatusTextstring- the response status textheadersHeaders- the response headersdataRecord<string, unknown>- the response data
formData FormData
The form values that the user is submitting, provided as
FormData.values Record<string, unknown>
The form values that the user is submitting, provided in expanded form.
isIdle Boolean
A boolean status prop derived as
status === 'idle'isSubmitting Boolean
A boolean status prop derived as
status === 'submitting'isRouting Boolean
A boolean status prop derived as
status === 'routing'isLoading Boolean
A boolean status prop derived as
status === 'loading' || status === 'routingisSuccess Boolean
A boolean status prop derived as
status === 'successisError Boolean
A boolean status prop derived as
status === 'error'