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

更新Redux值时检测到State Mutation异常问题咨询

问题根因

  • 扩展运算符[...props.arrayForSettings]仅完成了数组层级的浅拷贝,数组内部存储的element对象仍然和Redux状态中的原对象共享内存引用,直接修改element.updatedObject本质是直接修改Redux原始状态,因此触发了状态突变校验报错
  • updateAction被放在forEach循环内部执行,会在数组修改未完成的中间状态就触发Redux更新,也会导致状态校验异常

修复方案

修改时仅对需要变更的元素做拷贝,其余元素保持原引用即可,修改完成后统一触发Redux更新,参考代码如下:

// 先做数组层浅拷贝
const tempArrayForSettings = [...props.arrayForSettings];
// 遍历处理数组元素
const updatedArray = tempArrayForSettings.map(element => {
  // 不需要修改的元素直接返回原引用,兼顾性能
  if(element.settingsType !== "DesiredSettingType") return element;
  // 需要修改的元素先做对象层拷贝,再赋值新属性,避免修改原引用
  return {
    ...element,
    updatedObject: JSONUpdatedObject
  }
});
// 所有元素处理完成后统一触发更新
updateAction(updatedArray);

如果element对象层级超过1层,可根据实际需求选择对应层级的拷贝方式,只要保证不直接修改原对象的任何属性即可规避该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:54:05