Immutable.js:导出到数组时如何保持不变性?

时间:2016-01-03 15:33:22

标签: javascript arrays immutability immutable.js

我将数组传递给不可变列表对象。但是,当列表转换为随后正在更新的数组时,将修改不可变列表对象。

因此,不可变列表仍然是可变的,如何在仍然能够返回数组的情况下避免这种情况?

也请提供解释。 这里有一些用于说明场景的伪代码:

var data = [{id:'a'}, {id:'b'}, {id:'c'}];
var immutables = Immutable.List(data).asImmutable(); //Immutable list?

var myData = immutables.toArray();
myData[0] = {id:'x'}; //object is updated in immutable list as well

1 个答案:

答案 0 :(得分:0)

在不可变结构中包含可变数据几乎总是一个坏主意。(以其他方式围绕它更有意义)。要避免这种情况,请使用Immutable.fromJS(数据)而不是Immutable.List(data)和Immutable.Map(数据) - 就像@mostruash建议的那样。