react的defaultValue/value 区别
react 的 组件经常会有 value/defaultValue 这2个属性,我想知道 defaultValue 的使用场景
在React中,value
和 defaultValue
主要用于表单元素,如 <input>
, <textarea>
和 <select>
。
value
属性用于控制组件。设置value
会使它成为可控组件,这意味着其值由React的状态控制,你需要通过状态更新机制来改变其值。defaultValue
属性用于非控制组件。设置defaultValue
不会使它受状态控制,而是表现为在页面加载时设置一次初值,后续的用户输入或程序化更改,不会受到React的状态控制。
值得注意的是,你不能同时指定value
和defaultValue
这两个属性。如果尝试这样做,React会在控制台给你一个警告,因为它们在语义上是相互冲突的。
那么,defaultValue
的常见使用场景有:
如果你想要的是一个初始显示值,而不需要管理输入的状态,你可以使用
defaultValue
。表单数据非常大或者冗杂,手动控制所有的输入元素太麻烦时,可以选择使用
defaultValue
,让浏览器处理输入状态,而只在需要时,比如表单提交的时候,去获取表单的值。
但是,需要注意的是,defaultValue
的使用会使得React组件失去对元素值的完全控制,一般来说,如果需要更大的可控和灵活性,比如输入格式限制、实时错误提示等需求,更推荐使用value
进行处理。