resetField
Reset a single field's value and state independently.
</> resetField: UseFormResetField
Reset an individual field state.
Props
After invoking this function, with default options:
isValidwill be reevaluated, unlesskeepError: trueis passed.isDirtywill be reevaluated, unlesskeepDirty: trueis passed.
ResetField has the ability to retain field state. Here are the options you may want to use:
| Name | Type | Description | |
|---|---|---|---|
name | string | registered field name. | |
| options | keepError | boolean | When set to true, field error will be retained. |
keepDirty | boolean | When set to true, dirtyFields will be retained. | |
keepTouched | boolean | When set to true, touchedFields state will be unchanged. | |
defaultValue | unknown | When this value is not provided, field will be revert back to it's defaultValue. When this value is provided:
|
RULES
-
name need to match registered field name.
register("test")resetField("test") // ✅ register input and resetField worksresetField("non-existent-name") // ❌ failed by input not found
Examples:
Reset Field State
import { useForm } from "react-hook-form"export default function App() {const {register,resetField,formState: { isDirty, isValid },} = useForm({mode: "onChange",defaultValues: {firstName: "",},})const handleClick = () => resetField("firstName")return (<form><input {...register("firstName", { required: true })} /><p>{isDirty && "dirty"}</p><p>{isValid && "valid"}</p><button type="button" onClick={handleClick}>Reset</button></form>)}
Reset With Options
import { useForm } from "react-hook-form"export default function App() {const {register,resetField,formState: { isDirty, isValid, errors, touchedFields, dirtyFields },} = useForm({mode: "onChange",defaultValues: {firstName: "",},})return (<form><input {...register("firstName", { required: true })} /><p>isDirty: {isDirty && "dirty"}</p><p>touchedFields: {touchedFields.firstName && "touched field"}</p><p>dirtyFields:{dirtyFields.firstName && "dirty field"}</p><p>isValid: {isValid && "valid"}</p><p>error: {errors.firstName && "error"}</p><hr /><buttontype="button"onClick={() => resetField("firstName", { keepError: true })}>Reset keep error</button><buttontype="button"onClick={() => resetField("firstName", { keepTouched: true })}>Reset keep touched fields</button><buttontype="button"onClick={() => resetField("firstName", { keepDirty: true })}>Reset keep dirty fields</button><buttontype="button"onClick={() => resetField("firstName", { defaultValue: "New" })}>update defaultValue</button></form>)}
Video
The following video tutorial demonstrates resetField API.