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

React任务追踪器新增任务ID为NaN 如何设置默认值解决该问题

问题根因

  • 当所有任务被删除后,tasks数组为空,tasks[tasks.length - 1]的取值为undefined
  • 可选链操作符返回undefined后执行+1运算,最终结果为NaN

解决方案

你可以通过添加默认值兜底逻辑解决该问题,以下是两种实现方式:

方式1:空值合并运算符(推荐,符合原有写法逻辑)

const onAdd = (task) => {
  // 最后一个任务id不存在时兜底为0,空数组场景下生成的第一个id为1,符合规则
  const id = (tasks[tasks.length - 1]?.id ?? 0) + 1;
  const newTask = { id, ...task };
  setTasks([...tasks, newTask]);
};

方式2:数组长度判断(兼容性更好)

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

两种方式都可以避免空数组场景下id生成异常的问题,不会影响非空数组时的原有id自增逻辑。


内容的提问来源于stack exchange,提问作者עמית שוקרון

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:48:03