Site icon May's Notes

react-hook-form 如何手動更改 isDirty 狀態

react
const {
    control,
    reset,
    formState: { isDirty },
    handleSubmit,
  } = useForm({
    defaultValues: DEFAULT_DATA,
  })

isDirty 在更新表單後會保持 true 的狀態,如果要讓 isDirty 變回 false 狀態需要手動 reset

reset({})

reset 的第二個參數可以設置是否要保留錯誤、目前的值、更新的欄位值…等,更多的可以看 reset

reset({}, { keepValues: true })

但要注意的是,如果是通過 useForm() 獲取的 formState.isDirty ,某些時候會在 reset 後從 false 又變回 true,所以建議使用 useFormState 這個 hook 來獲取 isDirty

const { isDirty } = useFormState({ control })
Exit mobile version