我有一个不可变列表,并且运行map
。第三个参数是列表本身(iter
),但似乎它没有引用原始参数,而是为已处理的元素更新了它。
Immutable.fromJS([1, 2]).map((e, i, l) => console.log(l.toJS()))
打印:
[1, 2]
[undefined, 2]
对于第一个元素,它打印原始列表,但是对于第二个元素,列表似乎已更改。
我希望第三个参数始终引用原始列表,而不是部分更新的列表。
我确定我只是在这里遗漏了一个小问题,但是我不明白为什么不是这种情况。
Immutable.version
"4.0.0-rc.12"
答案 0 :(得分:0)
这是一项性能优化功能。
出于性能原因,创建了一个可变列表,这也是在映射循环中传递的内容,而不是原始的。您必须自己保留原始实例。
https://github.com/immutable-js/immutable-js/blob/master/src/List.js#L176