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

React中点击修改布尔值并追加键值对的代码错误求助

问题排查与修复

核心错误点

  • 对象字面量语法错误:你在展开对象时写了data.isCreated=false,这不符合对象键值对的写法,正确的应该是直接声明键名和值,比如isDev: false(你需求里的键是isDev,代码里写成isCreated是笔误)。
  • 类型不匹配:原mock数据里的isProcessing是字符串"true",你需要改成布尔值false,统一类型避免隐式转换问题。
  • 未处理子数组(可选):如果需要给subItems里的每个子对象也添加isDev: false并修正isProcessing类型,原代码没有递归处理这部分。

修复后的代码

const [processingItem, setProcessingItem] = useState(mockItems);

const onClick = () => {
  setProcessingItem((prevState) => 
    prevState.map((data) => {
      // 若需要处理子数组subItems,保留以下代码;不需要则删除
      const updatedSubItems = data.subItems.map(subItem => ({
        ...subItem,
        isProcessing: false,
        isDev: false
      }));
      
      return {
        ...data,
        isProcessing: false,
        isDev: false,
        subItems: updatedSubItems // 若不处理子数组,删除此行
      };
    })
  );
};

额外说明

  • 保持React状态更新的不可变性:必须使用map和对象展开运算符...创建新的数组/对象,绝对不能直接修改原状态对象,这是状态更新的核心规范。
  • 如果只需要修改主对象,不需要处理subItems,直接去掉子数组相关的代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:45:49