Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 注意:当我使用反向方法时,没有删除项目_Reactjs_Mapping_Delete File - Fatal编程技术网

Reactjs 注意:当我使用反向方法时,没有删除项目

Reactjs 注意:当我使用反向方法时,没有删除项目,reactjs,mapping,delete-file,Reactjs,Mapping,Delete File,我正在用react做一个笔记应用程序。我以相反的方式添加注释,最新注释是第一个注释,但从那时起,如果我单击删除第一个注释,它将删除最后一个注释,反之亦然 在App.jsx上 function deleteNote(id) { console.log(deleteNote); setNote(prevNotes=>{ return prevNotes.filter((noteItem, index)=>{ return index

我正在用react做一个笔记应用程序。我以相反的方式添加注释,最新注释是第一个注释,但从那时起,如果我单击删除第一个注释,它将删除最后一个注释,反之亦然

在App.jsx上

    function deleteNote(id) {
    console.log(deleteNote);
    setNote(prevNotes=>{
      return prevNotes.filter((noteItem, index)=>{
          return index !== id;
        });
    });
   
  };
return(
<section id='note-container'>
        {[...note].reverse().map((noteItem, index) => {
          return(
          <Note key={index} 
          id={index} 
          title={noteItem.title} 
          content={noteItem.content} 
          onDelete={deleteNote} />
        );
        })}
)
      </section>
函数删除注释(id){
console.log(deleteNote);
setNote(prevNotes=>{
返回prevNotes.filter((noteItem,index)=>{
返回索引!==id;
});
});
};
返回(
{[…注意].reverse().map((注意项,索引)=>{
返回(
);
})}
)
在Note.jsx中

function Note(props) {
 return (
   <div className="note">
     <h1>{props.title}</h1>
     <p>{props.content}</p>
     <button onClick={()=>{props.toggleEdit(props.id)}}>EDIT</button>
     <button onClick={()=>{props.onDelete(props.id)}}>DELETE</button>
   </div>
 );
}
功能说明(道具){
返回(
{props.title}
{props.content}

{props.toggleEdit(props.id)}>EDIT {props.onDelete(props.id)}>DELETE ); }
既然你有一个ID,你应该在过滤条件下使用它

setNote(prevNotes=>{
  return prevNotes.filter((noteItem)=>{
      return noteItem.id !== id; //changed
    });
});
别忘了在便笺中更改ID

<Note key={index} 
    id={noteItem.id}  //changed
    title={noteItem.title} 
    content={noteItem.content} 
    onDelete={deleteNote} 
/>

这是因为索引也是反向的

例如:

notes: [{a: 1}: 0, {b: 2}: 1, {c: 3}: 2, {d: 4}: 3]

notesAfterReverse: [{d: 4}: 0, {c: 3}: 1, {b: 2}: 2, {a: 1}: 3]

然后您尝试删除第一个便笺,但它的id为最后一个便笺。

@Ehceyn我编辑了答案以同时更改便笺中的id。不要将索引用作id。您可以使用一些随机方法生成id,或者找到另一个唯一标识符,然后您可以以相同的方式使用筛选器