React DOM 包含仅支持 Web(在浏览器 DOM 环境中运行)的 Hooks。这些 Hook 在 iOS、Android、Windows、canvas 等非 DOM 环境中不受支持
Form Hooks
useFormStatus(实验特性)
根据表单的状态更新 UI,提供上次表单提交的状态信息
const { pending, data, method, action } = useFormStatus()pending:Boolean。如果true,意味着父级<form>正在等待提交,否则falsedata:实现FormData interface的对象,其中包含父级<form>正在提交的数据- 如果没有主动提交或没有父级
<form>,则将为null
- 如果没有主动提交或没有父级
method:字符串值'get'或'post'- 这表示父级
<form>是使用GET还是POSTHTTP 方法提交 - 默认情况下,
<form>将使用GET方法,并且可以通过<form>的method属性指定
- 这表示父级
action:对传递给父级<form>上的actionprop 的函数的引用- 如果没有父级
<form>,则该属性为null - 如果为
actionprop 提供了 URI 值,或者未指定actionprop,则该属性为null
- 如果没有父级
举例:
function Form({ action }) {
async function increment(n) {
return n + 1;
}
const [count, incrementFormAction] = useActionState(increment, 0);
return (
<form action={action}>
<button formAction={incrementFormAction}>Count: {count}</button>
<Button />
</form>
);
}
function Button() {
const { pending } = useFormStatus();
return (
<button disabled={pending} type="submit">
Submit
</button>
);
}注意:
useFormStatusHook 必须从在<form>子组件调用,useFormStatus将仅返回父级<form>的状态信息