Javascript 无法使用不可变js在redux存储区的对象中添加新键

Javascript 无法使用不可变js在redux存储区的对象中添加新键,javascript,redux,immutable.js,Javascript,Redux,Immutable.js,如何使用不可变js向redux存储中的对象添加新密钥?例如,我的状态中有一个chartdata键,它是一个空对象。我正在打电话获取图表数据。调用完成后,我的reducer将获得一个chartId和一个data数组。我只想添加一个带有chartId的新键,并将值设置为data。因此,当我的呼叫继续时,chartdata将如下所示: chartdata: { "123" : [{}, {}], "324" : [{}, {}], ... } 我尝试了以下代码: return st

如何使用不可变js向redux存储中的对象添加新密钥?例如,我的状态中有一个chartdata键,它是一个空对象。我正在打电话获取图表数据。调用完成后,我的reducer将获得一个
chartId
和一个
data
数组。我只想添加一个带有
chartId
的新键,并将值设置为
data
。因此,当我的呼叫继续时,
chartdata
将如下所示:

chartdata: {
    "123" : [{}, {}],
    "324" : [{}, {}],
... } 
我尝试了以下代码:

return state.setIn(['chartData', action.chartId], action.data);
如果找不到,则希望它创建一个新键作为chartId,如果数据已经存在,则更新数据

我的浏览器控制台中出现以下错误:

uncaught at getChartDataSaga Error: invalid keyPath
at invariant (webpack:///./~/immutable/dist/immutable.js?:872:27)
at updateInDeepMap (webpack:///./~/immutable/dist/immutable.js?:1976:5)
at updateInDeepMap (webpack:///./~/immutable/dist/immutable.js?:1982:23)
at Map.updateIn (webpack:///./~/immutable/dist/immutable.js?:1280:26)
at Map.setIn (webpack:///./~/immutable/dist/immutable.js?:1258:19)
at chartsReducer (eval at ./app/modules/Library/Charts/reducer.js (http://localhost:3000/14.chunk.js:15:1), <anonymous>:26:20)
at eval (webpack:///./~/redux-immutable/dist/combineReducers.js?:37:39)
at Array.forEach (native)
at eval (webpack:///./~/redux-immutable/dist/combineReducers.js?:34:25)
at Map.withMutations (webpack:///./~/immutable/dist/immutable.js?:1355:7)
getChartDataSaga错误时取消捕获:键路径无效 at不变量(webpack:///./~/immutable/dist/immutable.js?:872:27) 在UpdateIndepMap(webpack:///./~/immutable/dist/immutable.js?:1976:5) 在UpdateIndepMap(webpack:///./~/immutable/dist/immutable.js?:1982:23) 在Map.updateIn(webpack:///./~/immutable/dist/immutable.js?:1280:26) 在Map.setIn(webpack:///./~/immutable/dist/immutable.js?:1258:19) 在chartsReducer(eval at./app/modules/Library/Charts/reducer.js(http://localhost:3000/14.chunk.js:15:1), :26:20) 评估时(webpack:///./~/redux immutable/dist/combineReducers.js?:37:39) at Array.forEach(本机) 评估时(webpack:///./~/redux immutable/dist/combineReducers.js?:34:25) 在地图上(webpack:///./~/immutable/dist/immutable.js?:1355:7)
您是如何初始化数据的?你是否做过
Map(state)
fromJS(state)
?fromJS(state)。后来我意识到了这一点,并且能够使用正确的API。