在redux应用程序中使用不可变映射
在我的reducer代码中有以下内容:
const IWT = new Map();
for (const item of action.IWT) {
let current = IWT[item.index];
if (current) {
current
.get('services')
.push(item.SID);
} else {
current = new IWTObject({
index: item.ID,
stage: item.stage,
name: item.name,
ranking: item.rank,
services: new List([item.SID]),
});
console.log(current, item.ID, IWT);
IWT.set(item.ID, current);
console.log(IWT);
}
}
出于某种原因,我在第一个current
输出中获得了item.ID
,IWT
和console.log()
的输出,但我仍然得到一个空白的Immutable { {1}}在第二个输出中用于IWT。
我在这里做错了什么?
答案 0 :(得分:0)
尝试const newIWT = IWT.set(item.ID, current);
然后console.log
表示Immutable.js设计为不变异,而是返回一个新值。
如果您要使用诸如map
之类的immutable.js方法作为列表或方法keySeq
或{{1>,我还建议使用不可变方法进行迭代而不是for循环对于地图类型。