[英]React: React Input Field not editable after i set data to state?
我不知道这里可能出了什么问题,但我正在按照教程编写相同的代码行,但似乎在添加此代码块时出现错误。
setTeacherLoginData({
...teacherLoginData,
[event.target.name]:event.target.value
});
我在想我的错误与此有关。
由于 value 属性未更新,因此无法编辑给定的输入字段。 您可以通过向输入字段添加 onChange 事件和 value 属性来解决此问题
这是我到目前为止写的代码
const [ teacherLoginData, setTeacherLoginData ] = useState({
email: '',
password: '',
});
const handleChange = (event) => {
setTeacherLoginData({
...teacherLoginData,
[event.target.name]:event.target.value
});
};
const submitForm = () => {
console.log(teacherLoginData);
};
return (
<input value="{teacherLoginData.email}" onChange="{handleChange}" type="text" className="form-control" />
<input value="{teacherLoginData.password}" onChange="{handleChange}" type="password" className="form-control" />
<button onClick="{submitForm}" className="btn btn-primary">Login</button>
)
您正在将文字字符串传递给 html input
和button
的道具。
您正在使用 vanilla HTML 表示法来设置input
和button
元素的属性。
<input value="{teacherLoginData.email}" onChange="{handleChange}" type="text" className="form-control" />
在 React 中,我们编写 JSX,类似于 JS + HTML。这里我们说的是props
而不是 html 元素的attributes
。 您传递类似于 html 的道具,但是您也可以使用{}
大括号传递 javascript 对象。
<input value={teacherLoginData.email} onChange={handleChange} type="text" className="form-control" />
注意到我从value
和onChange
道具中删除了""
以实际传递函数而不是包含“teacherLoginData.email”的字符串。
如果您使用引号,则您传递的是一个字符串,而不是 function 的实际className
引用。对于某些道具,它旨在传递一个字符串,即此<input/>
的type
和类名道具。
这是 JSX 文档的链接,可以让您熟悉它: https://reactjs.org/docs/jsx-in-depth.html
除了 peetzweg 的回答提到的问题之外,您的表单输入还缺少name
属性。 这意味着您的handleChange
function 中的event.target.name
将不会被填充。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.