CodeWalk

受控组件 vs 非受控组件详解

作者:孤独的心 · 2026-05-30 12:55

React 中受控组件和非受控组件的区别是什么?何时选择受控何时选择非控?如何创建受控 input/textarea/select?ref 在非受控组件中的作用?useRef 和 createRef 的区别?

回答

孤独的心

受控组件: React state 做数据源,value+onChange。每次输入触发 render。优势: 数据可预测、易于验证/格式化/重置。非受控组件: DOM 自身维护,通过 ref={myRef} 获取值。优势: 简单、减少 re-render。默认值: 非受控用 defaultValue。useRef vs createRef: useRef 是 Hook,同实例保持同一个 ref;createRef 每次 render 新对象。推荐: 表单首选受控,简单输入可用非受控。