【发布时间】:2021-09-21 18:53:12
【问题描述】:
您好,我是 React 的新手,我只是无法理解一些基本的东西。
其中之一如下。
为什么在 textarea 元素上使用 onChange 调用函数时 itemData 的状态会发生变化,如本例所示:
import React, { useEffect, useState } from "react";
function Createitem() {
const [itemData, setitemData] = useState([]);
const handleitemData = (e) => {
setitemData({
itemTime: Date.now(),
itemText: e.target.value,
});
};
useEffect(() => {
console.log("item", itemData);
}, [itemData]);
return (
<div className="itemBox">
<div>
<form>
<textarea
onChange={handleitemData}
placeholder="What you have in mind ..."
></textarea>
<button type="submit">item</button>
</form>
</div>
</div>
);
}
export default Createitem;
但在这个例子中,在表单元素上使用 onSubmit 调用函数时不是这样:
import React, { useEffect, useState } from "react";
function Createitem() {
const [itemData, setitemData] = useState([]);
const handleitemData = (e) => {
setitemData({
itemTime: Date.now(),
itemText: e.target.value,
});
};
useEffect(() => {
console.log("item", itemData);
}, [itemData]);
return (
<div className="itemBox">
<div>
<form onSubmit={handleitemData}>
<textarea placeholder="What you have in mind ..."></textarea>
<button type="submit">item</button>
</form>
</div>
</div>
);
}
export default Createitem;
我知道 React 方法是,如果这不起作用尝试其他方法,但我正在尝试真正了解发生了什么。
感谢您的回复。
【问题讨论】:
-
您的表单是否提交并导致页面重新加载?
-
嗨,克里斯法默,感谢您的回复!如果我删除 e.preventDefault();页面会重新加载。我想我在对此感到头疼时将其删除,但问题实际上是当我使用 onSubmit 调用函数时关键 itemText 未定义但是当我在 textarea 上使用 onChange 调用函数时关键 itemText 不为空。感谢您的意见!
标签: reactjs react-functional-component react-state