受控组件与非受控组件应该如何选择?
参考答案
受控输入由 React 的 value 或 checked 决定,并通过 onChange 等事件更新状态;非受控输入把当前值留在 DOM,通过 defaultValue 或 ref 初始化和读取。两者都可用于正确表单,关键在于状态由谁管理。
受控方式便于实时校验和联动,但高频输入不应触发整个大型页面的昂贵计算。文件输入等控件有特殊限制,不能按普通文本输入方式随意设置值。
不要在生命周期中把同一个输入从 undefined 值切换成受控字符串而不明确处理。输入法组合输入、焦点与光标位置也需要测试。复杂表单可选择成熟库,但仍应保留 label、错误关联和原生提交语义。