受控组件,就是受我们控制,组件的状态全程由外部控制
非受控组件,就是不受我们控制的组件,一般情况是在初始化的时候接受外部数据,然后自己在内部存储其自身的状态,当需要的时候,通过ref查DOM来查找当前的值
大部分的时候推荐用受控组件来实现表单,因为在受控组件中,表单数据由React组件负责处理
如果渲染非受控组件,控制能力比较弱,表单数据由DOM本身也就是form处理,但是更加方便快捷,代码量少
特征 | 非受控组件 | 受控组件 |
---|---|---|
一次性取值 | 可以 | 可以 |
提交时验证 | 可以 | 可以 |
即时现场验证 | 不可以 | 可以 |
有条件地禁用提交按钮 | 不可以 | 可以 |
强制输入格式 | 不可以 | 可以 |
一个数据的多个输入 | 不可以 | 可以 |
动态输入 | 不可以 |