useFormStatus 用于获取父级表单的提交状态,必须在 form 的子组件中使用。

useFormStatus Hook 详解

useFormStatus 用于获取父级表单的提交状态,必须在 form 的子组件中使用。

// 基本语法

import { useFormStatus } from 'react-dom';

function SubmitButton() {
  const { pending, data, method, action } = useFormStatus();

  return (
    <button disabled={pending}>
      {pending ? '提交中...' : '提交'}
    </button>
  );
}
⚠️ 重要: useFormStatus 必须在 <form> 的子组件中使用,不能在 form 所在的同一组件中使用。

示例 1: 基本提交按钮

说明: SubmitButton 组件使用 useFormStatus 获取父级表单的提交状态,无需通过 props 传递。

示例 2: 禁用所有输入

特点:

  • 每个输入框组件独立获取 pending 状态
  • 提交时所有输入框自动禁用
  • 无需通过 props 传递状态

示例 3: 显示提交数据

示例 4: 加载遮罩

返回值说明

属性类型说明
pendingboolean表单是否正在提交
dataFormData | null提交的表单数据
methodstringHTTP 方法(get/post)
actionfunction表单的 action 函数