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

React报错Cannot read properties of undefined (reading 'id') 求助

错误原因与修复方案

问题定位

错误Cannot read properties of undefined (reading 'id')的根源在于更新tasks状态的方式错误:
在handleAdd函数中,你使用了setTasks(...tasks, task),这会把数组的元素逐个传递给setState,导致tasks的状态从数组变成了单个任务对象。

当第一次点击添加按钮时:

  • tasks是空数组,...tasks展开后无内容,setTasks实际接收的参数是task,此时tasks状态变为单个对象而非数组。
    当第二次点击添加按钮时:
  • tasks是单个对象,tasks.length为undefined,tasks[tasks.length-1]等价于tasks[-1],结果是undefined,访问undefined.id就会触发报错。

修复代码

修改handleAdd函数中的setTasks调用,用数组展开语法创建新数组:

const handleAdd = () => {
  const task = {
    id: tasks.length === 0 ? 1 : tasks[tasks.length-1].id +1,
    name: newTask
  }

  // 正确的状态更新方式:创建新数组传入setTasks
  setTasks([...tasks, task])
}

额外优化建议

如果后续有删除任务的操作,用tasks.length生成id可能会出现重复(比如删除最后一个任务后再添加),可以改用时间戳生成唯一id:

const task = {
  id: Date.now(),
  name: newTask
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:03:16