immutable.js Map不持久化数据

时间:2017-05-11 09:07:41

标签: javascript redux immutable.js

在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.IDIWTconsole.log()的输出,但我仍然得到一个空白的Immutable { {1}}在第二个输出中用于IWT。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

尝试const newIWT = IWT.set(item.ID, current);然后console.log表示Immutable.js设计为不变异,而是返回一个新值。

如果您要使用诸如map之类的immutable.js方法作为列表或方法keySeq或{{1>,我还建议使用不可变方法进行迭代而不是for循环对于地图类型。