我在将表单中的值推送到我在屏幕上映射的数组时遇到了一些问题。
const ForumTopic = [ { title: "第一篇帖子", messages: "测试", author: "Dagger", count: 1, date: "02/16", }, ]; const [topic, setTopic] = useState(ForumTopic);
将ForumTopic存储在状态中,以便在点击下面的提交按钮后添加条目并在屏幕上显示。
const addTopic = (e) => { e.preventDefault(); setTopic([...topic, e.target.value]); }; <form onSubmit={addTopic}> 创建主题标题 <label htmlFor="title"> <input id="title"></input> </label> 编写您的消息 <label htmlFor="message"> <textarea id="message"></textarea> </label> <label htmlFor="author"> <input id="author" defaultValue="Dagger" hidden></input> </label> <label htmlFor="count"> <input id="count" defaultValue="1" hidden></input> </label> <label htmlFor="date"> <input id="date" defaultValue="02/16/2023" hidden></input> </label> <button type="submit"> 发布新消息 </button> </form>
这是我的代码和表单。代码的目的是将表单中每个标签的值推送到topic
数组中创建一个新对象。我希望将所有内容存储在一个新对象中,每个标签的id
与每个对象的名称(标题、作者、日期等)匹配,但由于某种原因,我只得到了未定义的错误。
问题在于你的addTopic函数中:
e.target.value始终为undefined
要访问数据,你需要这样做:
一种简单的方法是这样做。
您需要使用input的onChange获取到您正在获取的值。
示例链接:https://stackblitz.com/edit/react-8r9f8l?file=src%2FApp.js