首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么在删除元素之后,我的删除函数没有返回到页面数组中

为什么在删除元素之后,我的删除函数没有返回到页面数组中
EN

Stack Overflow用户
提问于 2022-10-27 09:38:19
回答 1查看 40关注 0票数 0

下面是正在工作的delete函数,它接受一个参数并使用参数中的索引删除元素。

Setitem是一个useState钩子,定义如下:当我们单击“添加”列表时,将其添加到项数组中。

代码语言:javascript
运行
复制
 const listofitem = () => {
    setitems((e) => {
      return [...e, list];
    });
  };

这一功能正在发挥作用。

代码语言:javascript
运行
复制
 const deleteItems = (e) => {
setitems((e1)=> {
  return e1.filter( (er, index)=> {
    return index!=e;
 });
});

}

为什么这不起作用,剪接法很好用。

代码语言:javascript
运行
复制
const deleteItems = (e) => {
    items.splice(e-1, 1);
    setitems((e1)=>{
      return e1;
    })
  };

下面是相同的代码沙箱,这个函数就是在这里工作的。但我想知道为什么另一个不起作用。

https://codesandbox.io/s/old-wood-cbnq86?file=/src/App.js:0-1169

EN

回答 1

Stack Overflow用户

发布于 2022-10-27 10:11:44

这就是我让它工作的方法,在您的示例中,您尝试直接改变状态,然后不真正设置状态。如果您想在setState上使用状态,则需要对您所称的e1进行变异。但是,您的代码框存在一些问题,有时会多次触发该函数。

代码语言:javascript
运行
复制
setitems((e1) => {
      e1.splice(e, 1);
      return [...e1];
    });

编辑作者更新的问题,这已不再相关。在第一个deleteItems函数中,您永远不会使用e,我假设它是要删除的索引。

代码语言:javascript
运行
复制
const deleteItems = (deleteIndex) => {
    setitems((list)=> list.filter((_, index)=> index !== deleteIndex));
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74219893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档