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 undervalues
andformData
.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
Error
type, with a name and message. In case of server-side errors, aFetchError
is available. AFetchError
extends the defaultError
class with the following properties:message
string- the error status code and message formatted as[status]: message
status
number- the response status codestatusText
string- the response status textheaders
Headers- the response headersdata
Record<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 === 'routing
isSuccess Boolean
A boolean status prop derived as
status === 'success
isError Boolean
A boolean status prop derived as
status === 'error'