不可变的,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
我正在我的 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