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

React待办列表点击删除按钮仅为对应列表项添加删除线问题求助

问题根因

你当前定义的strike是全局单一布尔状态,所有列表项共用该状态判断是否添加删除线,只要触发一次状态变更,所有列表项的判断条件都会同步生效,所以会出现全量加删除线的问题。

修复方案

将记录删除线的状态改为存储已标记删除的待办ID集合,使用Set结构可以快速判断当前项是否需要展示删除线。

步骤1:修改状态定义

把原来的布尔类型strike状态替换为存储ID的Set:

// 替换原 const [strike, setStrike] = useState(false);
const [strikeIds, setStrikeIds] = useState(new Set());

步骤2:修改deleteItem逻辑

点击删除按钮时,仅把对应待办的ID加入标记集合:

const deleteItem = (id) => {
  setStrikeIds(prev => {
    const updatedSet = new Set(prev);
    // 如果需要支持点击切换删除线效果,可增加判断:存在则移除,不存在则添加
    updatedSet.add(id);
    return updatedSet;
  });
  // 原有其他逻辑(比如设置结束时间等)可保留在下方
};

步骤3:修改渲染时的删除线判断条件

针对每个列表项单独判断ID是否在标记集合中:

<h3
  style={{
    textDecoration: strikeIds.has(elem.id) ? "line-through" : "none",
  }}
>
  {elem.name}
</h3>

如果后续需要实现点击后真正移除列表项的逻辑,只需在deleteItem中过滤掉对应ID的项更新items数组即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:18:00