Controller: Component
React Hook Form embraces uncontrolled components and native inputs, however it's hard to avoid working with external controlled component such as React-Select, AntD and Material-UI. This wrapper component will make it easier for you to work with them.
Props
The following table contains information about the arguments for useController
.
Name | Type | Required | Description |
---|---|---|---|
name | FieldPath | ✓ | Unique name of your input. |
control | Control | control object is from invoking useForm . Optional when using FormProvider . | |
render | Function | This is a render prop. A function that returns a React element and provides the ability to attach events and value into the component. This simplifies integrating with external controlled components with non-standard prop names. Provides | |
defaultValue | unknown | Important: Can not apply
| |
rules | Object | Validation rules in the same format for required, min, max, minLength, maxLength, pattern, validate | |
shouldUnregister | boolean = false | Input will be unregistered after unmount and defaultValues will be removed as well. |
Return
The following table contains information about properties which Controller
produces.
Object Name | Name | Type | Description |
---|---|---|---|
field | onChange | (value: any) => void | A function which sends the input's value to the library. |
onBlur | () => void | A function which sends the input's onBlur event to the library. It should be assigned to the input's | |
value | unknown | The current value of the controlled component. | |
name | |||
Input's name being registered. | |||
ref | |||
A ref used to connect hook form to the input. Assign | |||
fieldState | invalid | boolean | Invalid state for current input. |
isTouched | boolean | Touched state for current controlled input. | |
isDirty | boolean | Dirty state for current controlled input. | |
error | object | error for this specific input. | |
formState | isDirty | boolean | Set to
|
dirtyFields | object | An object with the user-modified fields. Make sure to provide all inputs' defaultValues via useForm, so the library can compare against the Dirty fields will not represent as | |
touchedFields | object | An object containing all the inputs the user has interacted with. | |
isSubmitted | boolean | Set to true after the form is submitted. Will remain true until the reset method is invoked. | |
isSubmitSuccessful | boolean | Indicate the form was successfully submitted without any | |
isSubmitting | boolean | true if the form is currently being submitted. false otherwise. | |
submitCount | number | Number of times the form was submitted. | |
isValid | boolean | Set to true if the form doesn't have any errors.Note: | |
isValidating | boolean | Set to true during validation. | |
errors | object | An object with field errors. There is also an ErrorMessage component to retrieve error message easily. |
Examples
Video
The following video showcase what's inside Controller and how its been build.
Tips
Do not
register
input again. This component is made to take care of the registration process.Customise what value gets sent to hook form by transforming the value during
onChange
.
Thank you for your support
If you find React Hook Form to be useful in your project, please consider to star and support it.