尝试构建删除功能,出错

时间:2021-03-09 16:34:58

标签: javascript reactjs

我正在尝试为我的天气应用程序构建一个删除函数,该函数仅在我通过 MAP 循环尝试的数组中的最后一个位置上工作,但出现太多渲染错误。

这是我项目的沙箱 URL - https://codesandbox.io/s/kind-platform-cymzx?fontsize=14&hidenavigation=1&theme=dark

我不明白如果在最后一个上工作,你为什么不在第一个上工作? (对于 for 循环,它让我只编辑最后一个,在地图循环中,它说渲染太多)

伙计们,我已经坚持了 3 天了,请帮忙。

1 个答案:

答案 0 :(得分:0)

这是您的功能:

let deleteFunc = (name) => {
  allFavorite.map((item, index) => {
    console.log(item.name);
    let updatedFavorite = allFavorite.filter((item, i) => (item.name = name));
    setAllFavorite(updatedFavorite);
  });
};

第一个问题是你在过滤器函数中改变了 item.name。 第二个问题是您在地图内设置状态,因此您为 setAllFavorite 中的每个项目调用 allFavorite

您在这里的目标是先构建新状态,然后一次性应用它,如下所示:

let deleteFunc = (name) => {
  // this will return new array where item with name `name` removed, and will pass it into state setter
  setAllFavorite(allFavorite.filter((item) => item.name !== name));
};