18910140161

JavaScript--尝试了很多,但无法使deletehandler函数工作。下面是我的代码堆栈溢出

顺晟科技

2022-10-19 13:55:26

158

这是我的librarylist组件,我在其中传递deletehandler函数以从库管理中删除该行。我不知道是哪部分的代码导致了这个问题。欢迎提供任何帮助/建议。 librarybooklist.js

 const LibraryBookList = (props) => {
 const[database, setDatabase]=useState()
 const deleteHandler = (bookdataId) => {

 const newDatabase=[...database];

 const index= database.findIndex((bookdata)=>bookdata.id===bookdataId)

 newDatabase.splice(index,1)

setDatabase(newDatabase);
} ;

return (
<ul className={classes.list}>
  {props.database.map((bookdata) => 
     (<LibraryBook

      key={bookdata.key}
      id={bookdata.id}
      bookname={bookdata.bookName}
      author={bookdata.author}
      publisher={bookdata.publisher}
      pages={bookdata.pages}
      serialno={bookdata.serialNo}
      onSelect={deleteHandler}
    />
  ))}
</ul>
   )};

这里我通过道具传递deletehandler librarybook.js

 const LibraryBookList = (props) => {
 const[database, setDatabase]=useState()
 const deleteHandler = (bookdataId) => {

 const newDatabase=[...database];

 const index= database.findIndex((bookdata)=>bookdata.id===bookdataId)

 newDatabase.splice(index,1)

setDatabase(newDatabase);
} ;

return (
<ul className={classes.list}>
  {props.database.map((bookdata) => 
     (<LibraryBook

      key={bookdata.key}
      id={bookdata.id}
      bookname={bookdata.bookName}
      author={bookdata.author}
      publisher={bookdata.publisher}
      pages={bookdata.pages}
      serialno={bookdata.serialNo}
      onSelect={deleteHandler}
    />
  ))}
</ul>
   )};

**bookdata.js**

 const LibraryBookList = (props) => {
 const[database, setDatabase]=useState()
 const deleteHandler = (bookdataId) => {

 const newDatabase=[...database];

 const index= database.findIndex((bookdata)=>bookdata.id===bookdataId)

 newDatabase.splice(index,1)

setDatabase(newDatabase);
} ;

return (
<ul className={classes.list}>
  {props.database.map((bookdata) => 
     (<LibraryBook

      key={bookdata.key}
      id={bookdata.id}
      bookname={bookdata.bookName}
      author={bookdata.author}
      publisher={bookdata.publisher}
      pages={bookdata.pages}
      serialno={bookdata.serialNo}
      onSelect={deleteHandler}
    />
  ))}
</ul>
   )};

newdatabase.js

 const LibraryBookList = (props) => {
 const[database, setDatabase]=useState()
 const deleteHandler = (bookdataId) => {

 const newDatabase=[...database];

 const index= database.findIndex((bookdata)=>bookdata.id===bookdataId)

 newDatabase.splice(index,1)

setDatabase(newDatabase);
} ;

return (
<ul className={classes.list}>
  {props.database.map((bookdata) => 
     (<LibraryBook

      key={bookdata.key}
      id={bookdata.id}
      bookname={bookdata.bookName}
      author={bookdata.author}
      publisher={bookdata.publisher}
      pages={bookdata.pages}
      serialno={bookdata.serialNo}
      onSelect={deleteHandler}
    />
  ))}
</ul>
   )};

顺晟科技:

代码有几个问题:1)内部。相反,您应该给出一个对该函数的引用。2)在单击删除按钮之前,您没有任何状态。这就是为什么扩展操作符不能工作的原因3)您显示的是状态而不是状态。也就是说,即使删除了一个bookdata后,更改也没有显示出来。我还修复了一些小问题。现在它工作得很好:

 const LibraryBookList = (props) => {
 const[database, setDatabase]=useState()
 const deleteHandler = (bookdataId) => {

 const newDatabase=[...database];

 const index= database.findIndex((bookdata)=>bookdata.id===bookdataId)

 newDatabase.splice(index,1)

setDatabase(newDatabase);
} ;

return (
<ul className={classes.list}>
  {props.database.map((bookdata) => 
     (<LibraryBook

      key={bookdata.key}
      id={bookdata.id}
      bookname={bookdata.bookName}
      author={bookdata.author}
      publisher={bookdata.publisher}
      pages={bookdata.pages}
      serialno={bookdata.serialNo}
      onSelect={deleteHandler}
    />
  ))}
</ul>
   )};
  • TAG:
相关文章
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航