React 中的受控组件与非受控组件
受控组件:通过 state 或 props 控制表单元素状态的 React 组件,即每个状态突变都会有一个相关的处理函数。
特征
import React, { useState } from 'react';
function ControlledForm() {
const [value, setValue] = useState('');
const handleChange = (event) => {
setValue(event.target.value);
};
return (
);
}非受控组件:React 组件,其中 DOM 本身处理表单元素的状态。React 通过 ref 访问输入值,ref 在内部存储其自己的状态,您可以使用 ref 查询 DOM 以在需要时找到其当前值。这更像传统的 HTML。
特征
import React, { useRef } from 'react';
function UncontrolledForm() {
const inputRef = useRef();
const handleSubmit = (event) => {
event.preventDefault();
alert('Input Value: ' + inputRef.current.value);
};
return (
);
}以下是受控组件和非受控组件的比较表:

**何时使用**
受控——用于实时验证、输入格式化或即时反馈。
不受控制 - 用于简单用例,例如文件上传预填表单值并不频繁或需要推迟到表单提交。