不可变的,updateIn 提供无效的 keyPath

immutable, updateIn giving invalid keyPath

我正在我的 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 方法只能对 immutable.js 数据结构起作用,所以如果 Uncaught Error: invalid keyPath 发出,很可能是你的数据结构:

{
  svl: true
}

是一个普通的 JavaScript 对象而不是 immutable.js 数据结构,尝试使用 Immutable.Map.

转换它

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