zjffun blog

React 可控组件和非可控组件的选择

更新于 写于 前端

原则

受控组件(用户输入 ---> state 更新 ---> 组件更新)的消耗明显比非受控组件大的多,但非受控组件只能在需求非常简单的情况下的使用。

特性 uncontrolled 受控组件
只用一次(例如:只在提交时使用)
提交时验证
立即验证
根据表单填写情况动态禁用提交按钮
固定输入格式
多个输入确定一个值
动态的输入框(例如:小组成员)

注意:在 React 中,<input type="file" />始终是一个不受控制的组件,因为它的值只能由用户设置,而不是以编程方式设置。(参见:Uncontrolled Components – React

参考

Controlled and uncontrolled form inputs in React don't have to be complicated - Gosha Arinich