解决React报错You provided a `checked` prop to a form field
Borislav Hadzhiev 人气:0总览
当我们在多选框上设置了checked
属性,却没有onChange
处理函数时,会产生"You provided a checked
prop to a form field without an onChange
handler"错误。为了解决该错误,可以使用defaultChecked
属性,或者在表单字段上设置onChange
属性。
这里有个例子用来展示错误是如何发生的。
// App.js export default function App() { // ⛔️ Warning: You provided a `checked` prop to a form field // without an `onChange` handler. This will render a read-only field. // If the field should be mutable use `defaultChecked`. // Otherwise, set either `onChange` or `readOnly`. return ( <div> <input type="checkbox" id="subscribe" name="subscribe" checked={true} /> </div> ); }
上述代码片段的问题在于,我们在input
表单上设置了checked
属性,但却没有提供onChange
事件处理器。这使得input
的checked
属性成为静态的。
defaultChecked
解决该错误的一种方式是,使用defaultChecked
属性取而代之。
export default function App() { return ( <div> <input type="checkbox" id="subscribe" name="subscribe" defaultChecked={true} /> </div> ); }
defaultChecked
属性为多选框设置了一个初始值,但是该值不是静态的,是可以被更改的。
defaultChecked
属性常被用于不受控(不被开发者控制)的多选框。这意味你必须使用ref
或者表单元素来访问表单字段的值。
// App.js import {useRef} from 'react'; //
加载全部内容
- 猜你喜欢
- 用户评论