不可变,更新在给出无效的键路径

immutable, updateIn giving invalid keyPath

本文关键字:无效 路径 更新 不可变      更新时间:2023-09-26

我正在我的 redux 应用程序中实现不可变,并且updateIn函数出现问题。我有一个开关,我想在我的减速器中通过此操作打开和关闭它。逻辑是这样的:

     case actions.ADMIN_TOGGLE_SETTING:
            console.log("hit toggle", action);
            console.log("state", state.toJS());
            return state.updateIn(['toggleSettings', action.name], (oldValue) => !oldValue);

所以这给了我一个控制台错误 Uncaught Error: invalid keyPath .我不确定为什么,因为运行 state.toJS() 的控制台日志如下所示:

{
    toggleSettings : {
        svl : true
    }  
}

action.name 是"SVL"。所以我想也许 action.name 是问题所在?但它正确通过,看起来像这样:

  {type: "ADMIN_TOGGLE_SETTING", name: "svl" }

任何建议都会很棒。谢谢!

updateIn方法只能用于不可变.js数据结构,因此如果Uncaught Error: invalid keyPath发出,则数据结构很可能:

{
  svl: true
}

是一个普通的 JavaScript 对象而不是不可变.js数据结构,请尝试使用 Immutable.Map 进行转换。

像这样: (oldValue=action.name)=>!oldValue