
本文介绍如何为 react todo 应用添加安全、高效的列表项删除功能,包括基于索引的删除逻辑、事件绑定方式及关键注意事项,帮助开发者避免状态更新陷阱。
本文介绍如何为 react todo 应用添加安全、高效的列表项删除功能,包括基于索引的删除逻辑、事件绑定方式及关键注意事项,帮助开发者避免状态更新陷阱。
在当前的 Todo 列表实现中,用户可添加任务但无法删除——这是功能闭环的关键缺失。要支持删除操作,核心在于:为每个列表项绑定唯一删除行为,并确保状态更新符合 React 的不可变更新原则。
✅ 正确的删除实现方式
首先,在组件内定义 deleteTodo 函数,接收当前项的索引(index),通过浅拷贝数组 + splice() 移除指定位置元素,再调用 setList 更新状态:
const deleteTodo = (index: number) => {
const updatedList = [...list]; // 创建新数组副本(不可变更新)
updatedList.splice(index, 1); // 删除该索引处的 1 个元素
setList(updatedList);
};
⚠️ 注意:切勿直接对原数组调用 splice() 后 setList(list) —— 这会修改原始 state 引用,导致 React 无法正确触发重渲染或引发难以调试的副作用。
接着,在 list.map() 渲染逻辑中,为每项包裹可点击的交互元素(如