formState: 对象
此对象包含有关整个表单状态的信息。它可以帮助您跟踪用户与表单应用程序的交互。
返回值
名称 | 类型 | 描述 |
---|---|---|
isDirty | 布尔值 | 用户修改任何输入后设置为
|
dirtyFields | 对象 | 包含用户修改的字段的对象。确保通过 useForm 提供所有输入的 defaultValues,以便库可以与
|
touchedFields | 对象 | 一个包含用户交互过的所有输入的对象。 |
defaultValues | 对象 | 在 useForm的 defaultValues 中设置的值或通过 reset API 更新的 defaultValues。 |
isSubmitted | 布尔值 | 表单提交后设置为true 。将保持 true 直到调用reset 方法。 |
isSubmitSuccessful | 布尔值 | 表示表单已成功提交,没有运行时错误。 |
isSubmitting | 布尔值 | true 如果表单当前正在提交。 false 否则。 |
isLoading | 布尔值 |
重要:此属性仅适用于异步
|
submitCount | 数字 | 表单提交的次数。 |
isValid | 布尔值 | 如果表单没有任何错误,则设置为 true 。
|
isValidating | 布尔值 | 在验证期间设置为true 。 |
validatingFields | 布尔值 | 捕获正在进行异步验证的字段。 |
errors | 对象 | 包含字段错误的对象。还有一个 ErrorMessage 组件可以轻松检索错误消息。 |
规则
formState
用一个 Proxy 包装,以提高渲染性能,并在未订阅特定状态的情况下跳过额外的逻辑。因此,请确保在render
之前调用或读取它,以启用状态更新。formState
是批量更新的。如果您想通过useEffect
订阅formState
,请确保将整个formState
放在可选数组中。useEffect(() => {if (formState.errors.firstName) {// do the your logic here}}, [formState]); // ✅// ❌ formState.errors will not trigger the useEffect注意订阅时的逻辑运算符
formState
.// ❌ formState.isValid is accessed conditionally,// so the Proxy does not subscribe to changes of that statereturn <button disabled={!formState.isDirty || !formState.isValid} />;// ✅ read all formState values to subscribe to changesconst { isDirty, isValid } = formState;return <button disabled={!isDirty || !isValid} />;
示例
import React from "react";import { useForm } from "react-hook-form";export default function App() {const {register,handleSubmit,// Read the formState before render to subscribe the form state through the ProxyformState: { errors, isDirty, isSubmitting, touchedFields, submitCount },} = useForm();const onSubmit = (data) => console.log(data);return (<form onSubmit={handleSubmit(onSubmit)}><input {...register("test")} /><input type="submit" /></form>);}
视频
以下视频将详细解释不同的表单状态。
感谢您的支持
如果您发现 React Hook Form 对您的项目很有用,请考虑给它加星标并支持它。