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

如何在React中修改数组状态的指定项?TodoList全选功能实现问题

问题原因

你写的CompleteAll函数存在2处逻辑错误:

  • map遍历的回调里直接返回了item.isDone===true的布尔判断结果,直接把每个任务项替换成了布尔值,丢失了task等原有属性
  • 最终给SetTaskList的返回值是{list: [...]}格式的对象,而taskList本身是数组类型,结构不匹配会导致后续渲染逻辑报错

修改后的代码

const CompleteAll = (e) =>{
  SetTaskList((prev) => {
    // 遍历所有任务,保留原有属性的同时把isDone设为true
    return prev.map((item) => ({...item, isDone: true}))
  })
}

修改说明

  • 用展开运算符...item保留每个任务项的原有字段,只覆盖isDone属性为true,不会丢失任务内容
  • 直接返回map后的数组,和taskList原本的数组结构保持一致,不会影响后续的列表渲染逻辑

内容的提问来源于stack exchange,提问作者Mehmet Can BOZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:39:04