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 (); }
以下是受控组件和非受控组件的比较表:

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