我在我的redux应用程序中实现了不可变,并且遇到了updateIn
函数的问题。在我的reducer中,我有一个切换,我想用这个动作打开和关闭。逻辑是这样的:
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" }
任何建议都会很棒。谢谢!
答案 0 :(得分:4)
updateIn
方法只适用于immutable.js数据结构,因此如果发出Uncaught Error: invalid keyPath
,则可能是您的数据结构:
{
svl: true
}
是一个普通的JavaScript对象而不是immutable.js数据结构,尝试使用Immutable.Map
进行转换。
答案 1 :(得分:0)
像这样:(oldValue=action.name)=>!oldValue