react的defaultValue/value 区别

react 的 组件经常会有 value/defaultValue 这2个属性,我想知道 defaultValue 的使用场景

在React中,valuedefaultValue主要用于表单元素,如 <input>, <textarea><select>

  • value 属性用于控制组件。设置 value 会使它成为可控组件,这意味着其值由React的状态控制,你需要通过状态更新机制来改变其值。

  • defaultValue 属性用于非控制组件。设置 defaultValue不会使它受状态控制,而是表现为在页面加载时设置一次初值,后续的用户输入或程序化更改,不会受到React的状态控制。

值得注意的是,你不能同时指定valuedefaultValue这两个属性。如果尝试这样做,React会在控制台给你一个警告,因为它们在语义上是相互冲突的。

那么,defaultValue的常见使用场景有:

  1. 如果你想要的是一个初始显示值,而不需要管理输入的状态,你可以使用defaultValue

  2. 表单数据非常大或者冗杂,手动控制所有的输入元素太麻烦时,可以选择使用 defaultValue,让浏览器处理输入状态,而只在需要时,比如表单提交的时候,去获取表单的值。

但是,需要注意的是,defaultValue的使用会使得React组件失去对元素值的完全控制,一般来说,如果需要更大的可控和灵活性,比如输入格式限制、实时错误提示等需求,更推荐使用value进行处理。