You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何无法使用useState Hook删除数组元素?请求排查代码

React数组删除功能失效问题修复

问题根源

你的删除逻辑失效核心原因是参数传递错误:

  • 点击删除按钮时,deleting函数接收的参数是点击事件对象,而非你预期的索引值
  • 此时e - 1会计算出NaN,index !== NaN永远为true,导致filter无法过滤任何元素,数组无变化

修复步骤

  1. 修正参数传递:渲染Ank组件时,通过箭头函数直接传递目标元素的原索引,避免事件对象干扰
  2. 简化删除逻辑:直接使用原索引进行过滤,去掉多余的+1/-1计算

修改后的关键代码如下:

1. 调整Ank组件的调用

{array.map((e, index) => {
  return (
    <Ank key={index} onSelect={() => deleting(index)} name={e} />
  );
})}

2. 重构deleting函数

const deleting = (targetIndex) => {
  setArray(prevArray => prevArray.filter((_, index) => index !== targetIndex));
};

额外优化建议

  • 避免用数组索引作为key:元素删除后索引会重新排列,可能导致React渲染异常,建议给每个笔记添加唯一ID(比如用Date.now()生成)
  • 当前的useEffect已能正确同步数组到localStorage,无需修改

内容的提问来源于stack exchange,提问作者Ankit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 18:25:35