Javascript 无法使用不可变js在redux存储区的对象中添加新键
如何使用不可变js向redux存储中的对象添加新密钥?例如,我的状态中有一个chartdata键,它是一个空对象。我正在打电话获取图表数据。调用完成后,我的reducer将获得一个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
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。