React | 受控组件
在 React 里,受控组件指的是表单元素的值由 React 组件的状态(state)管理, 而不是让 DOM 自己存储值。
简单理解: 📌 受控组件 = React 通过 state 管理输入值,React 说了算! 📌 非受控组件 = React 不存这个值,让浏览器自己管理,React 只是在需要时去“偷看”一下。
一个简单的 受控组件 的示例:
import React, { useState } from 'react';
function ControlledInput() {
const [value, setValue] = useState('');
const handleChange = (event) => {
setValue(event.target.value);
};
return (
<input type="text" value={value} onChange={handleChange} />
);
}
export default ControlledInput;
这个案例在 React 中模拟类似双向数据绑定的效果
通过将表单元素的值与 React 组件的状态进行绑定
并在状态发生变化时更新表单元素的值,实现数据同步更新
来看 非受控组件 的代码:
import { useRef } from "react";
function MyForm() {
const inputRef = useRef(); // 只是获取 DOM
return <input type="text" ref={inputRef} />;
}
🔹 这里 没有 value 绑定,没有 onChange,React 只是获取 DOM,但不控制输入框的值。
那输入框的值谁在管理?
🔸 浏览器在管!
你输入啥,浏览器就自动存住 你按 退格键,浏览器自动删掉 React 完全没干涉 如果你想拿到输入的值,你得手动去 DOM 里拿。 React 只是在需要的时候去 inputRef.current.value 里取值,而不是一直管理这个值。