javascript - 尝试构建删除功能,出错了
问题描述
我正在尝试为我的天气应用程序构建一个删除功能,该功能仅适用于我通过 MAP 循环尝试的数组中的最后一个位置,但出现太多渲染错误。
这是我项目的沙盒 URL - https://codesandbox.io/s/kind-platform-cymzx?fontsize=14&hidenavigation=1&theme=dark
如果 ts 处理最后一个,我不明白,为什么你不处理第一个?(使用 for 循环它让我只编辑最后一个,在地图循环中,它说渲染太多)
伙计们,我坚持了 3 天,请帮忙。
解决方案
这是您的功能:
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));
};
推荐阅读
- r - 基于多列和多行条件展开 R 数据框
- c# - 如何返回方法?
- c# - 实现和泛化UML?
- c# - 如何在 UWP C# 中按名称杀死进程?
- c++ - Vector.push_back(对
(x1,x2)); 不工作 - php - 站点地图文件如何自动更新?
- kiwi-tcms - 如何使用 API 从 KIWI TCMS 导出 Testcase?
- javascript - 我想在一个数组中搜索一个字符串,并想显示键:前端字符串的“值”以角度
- c# - 在 C# 中使用 libvideo 下载的代理
- google-cloud-platform - google-cloud-monitoring python-API: metric without resource(选择没有资源的指标可能会影响性能。)