javascript - 在 React 顶部显示最新元素
问题描述
我正在创建一个 React 应用程序。我想在顶部显示最后添加的注释。
Notes 是一个对象数组。如您所见,我尝试过 notes.reverse() 但不知何故它不起作用。元素仍在底部添加。
<div>
{notes.reverse().map((note)=> (
<NotesCard
note={note}
key={note.id}
setInputText={setInputText}
setInputTitle={setInputTitle}
setNotes={setNotes}
notes={notes}
setId={setId}
/>
))
}
</div>
我正在使用在单击提交按钮时触发的 submitHandler 函数。该函数如下所示:
const submitHandler = () => {
if (inputText || inputTitle) {
setNotes([
...notes,
{title:inputTitle , text: inputText, id: Math.random()*1000}
]);
} else {
alert("Notes are Empty. Type something in textarea.");
}
setInputText("");
setInputTitle("");
setId("");
};
我还使用 updateHandler 函数来更新现有笔记。单击更新按钮时触发。每当我在这里使用 splice() 或 unshift() 设置顶部 chrome 上的更新注释时,都会停止响应并且一切都挂起。
const updateHandler = () => {
for (var i=0; i<notes.length; i++) {
if (id===notes[i].id) {
if (inputText || inputTitle) {
notes.push(
{title:inputTitle , text: inputText, id: Math.random()*1000}
);
setNotes(notes.filter((el) => el.id !== id));
} else {
alert("Notes are Empty. Type something in textarea.");
}
}
};
setInputText("");
setInputTitle("");
setId("");
}
解决方案
移除 reverse() 并将 newNote 添加到 notesArray 的顶部
第一的
代替 {notes.reverse().map((note)=> ( //code ))}
采用{notes.map((note)=> ( //code ))}
第二
代替
setNotes([
...notes,
{title:inputTitle , text: inputText, id: Math.random()*1000}
]);
采用
setNotes([
{title:inputTitle , text: inputText, id: Math.random()*1000},
...notes
]);
推荐阅读
- python - SUMO GUI 和 TraCI 问题:无法使用端口 xxxxx 连接到 TraCI 服务器(TraCI 服务器已经完成)
- anova - 如何对重复测量进行探索性分析?
- python - IndexError: tuple index out of range when I try to create an executable from a python script using auto-py-to-exe
- python - 导出为 XLSX 格式 python google sheet api
- c# - 我应该在这里使用线程吗?
- bash - 如何删除 JPG 文件,但前提是匹配的 RAW 文件存在?
- c - 不理解 C 中的递归函数
- apache-spark - 在 spark.driver.extraJavaOptions 和 spark.executor.extraJavaOptions 中编写 prometheus jmxexporter 的正确方法用于 spark 提交
- html - 锚链接在本地工作,但在部署时不工作 (React)
- python - 下订单时如何在库存中创建减法?[Django] [Python] [电子商务网站]