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

React Native中如何删除数组第一行内id为2的元素?

解决React Native中修改数组state的问题

你需要修改数组中第一个元素的answers数组,过滤掉指定id的项,同时保持原数组结构并正确更新state。以下是修正后的代码:

const onDelete = useCallback((itemId) => {
  // 复制原数组,避免直接修改state(浅拷贝足够,后续会单独处理内部对象)
  const newItems = [...items];
  
  // 确保第一个元素存在,避免报错
  if (newItems[0]) {
    // 复制第一个元素,替换它的answers数组(遵循不可变更新原则)
    newItems[0] = {
      ...newItems[0],
      answers: newItems[0].answers.filter(answer => answer.id !== itemId)
    };
  }
  
  // 更新state
  setItems(newItems);
}, [items]); // 依赖数组添加items,避免闭包导致的旧值问题

关键说明:

  • 你之前的错误是直接把newItems替换成了过滤后的answers数组,破坏了原有的对象数组结构,导致state更新后不符合预期。
  • 必须遵循React的不可变更新原则:不能直接修改newItems[0].answers,而是通过复制第一个元素,再替换它的answers属性,保证state更新的可追踪性。
  • useCallback的依赖数组必须包含items,否则函数会一直引用初始的items值,导致更新失效。

调用时传入要删除的id即可:

onDelete(2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:06:25