如何解决反应受控与不受控制的输入表单
首先考虑我对反应还很陌生。
我正在构建一个表单,其中一个字段是一个输入。在输入中输入文本时,我收到一条消息说
警告:组件正在将不受控制的输入更改为受控
我查看了文档,但我无法理解它为什么会这样。有人能帮我理解吗?
这里是输入框
<div>
<input type="text"
name = 'brand'
onChange = {(e) => inputChange(e)}
value = {submit.brand}
required />
</div>
这是处理它的函数
{submit,SetSubmit} = useState([)
const inputChange = (e) => {
const { name,value } = e.target;
setSubmit(submit => ({...submit,[name]: value}))}
非常感谢您帮助我理解
解决方法
您可以参考 here 以了解功能组件中受控输入的使用。
您错误地初始化状态,
const [submit,SetSubmit] = useState('');
另外, onChange 事件应该被处理为
<div>
<input type="text"
name = 'brand'
onChange = {inputChange}
value = {submit}
required />
</div>
并作为,
const inputChange = (e) => {
setSubmit(e.target.value)
}
如果有多个输入,请参考以下示例:
import React,{ useState } from "react";
const initialValues = {
company: "",position: "",link: "",date: "",note: "",};
export default function Form() {
const [values,setValues] = useState(initialValues);
const handleInputChange = (e) => {
const { name,value } = e.target;
setValues({
...values,[name]: value,});
};
return (
<form>
<input
value={values.company}
onChange={handleInputChange}
name="company"
label="Company"
/>
<input
value={values.position}
onChange={handleInputChange}
name="position"
label="Job Title"
/>
// ... Rest of the input fields
<button type="submit"> Submit </button>
</form>
);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。