React 表单处理包括受控组件、非受控组件、表单验证等核心概念。

1

受控组件

0

当前值: (空)

const [text, setText] = useState("");

<input
  value={text}
  onChange={(e) => setText(e.target.value)}
/>
受控组件

React state 是唯一数据源,每次输入都更新 state。

2

非受控组件

获取到的值:
const inputRef = useRef<HTMLInputElement>(null);

const handleSubmit = () => {
  console.log(inputRef.current?.value);
};

<input ref={inputRef} defaultValue="初始值" />
非受控组件

使用 ref 直接访问 DOM,用 defaultValue 设置初始值。

3

多字段表单

当前表单数据:

{
  "username": "",
  "email": "",
  "password": "",
  "remember": false
}
4

各类表单元素

当前表单数据:

{
  "text": "",
  "textarea": "",
  "select": "react",
  "radio": "male",
  "multiSelect": []
}
5

表单验证

表单验证通过!
6

异步提交

操作失败

const handleSubmit = async (e) => {
  e.preventDefault();
  if (isSubmitting) return;

  setIsSubmitting(true);
  try {
    await submitForm();
  } finally {
    setIsSubmitting(false);
  }
};
异步提交提示

使用 loading 状态防止重复提交,try/finally 确保状态恢复。