How @mantine/form works
The use-form hook is used to store form values,
errors, touched, dirty, and validation state. In order to support all @mantine/form
features (including form.getInputProps()), custom inputs must accept the following props:
value– input value in controlled modedefaultValue– input value in uncontrolled modeonChange– input change handler used for both controlled and uncontrolled modeserror– validation error messageonBlur– used to set the field as touched
use-uncontrolled hook
In most cases, the easiest way to add support for both controlled and uncontrolled modes is to use the
use-uncontrolled hook. It allows you to use value and
defaultValue props together and automatically handles controlled/uncontrolled mode switching.
Example of a custom input that supports both controlled and uncontrolled modes:
Full example
In the following example, the CustomInput component supports all @mantine/form features:
value,defaultValue, andonChangeare used to control the input valueerroris used to display the validation error messageonBlur(part of...othersprops) is used to set the field as touched