我将数组传递给不可变列表对象。但是,当列表转换为随后正在更新的数组时,将修改不可变列表对象。
因此,不可变列表仍然是可变的,如何在仍然能够返回数组的情况下避免这种情况?
也请提供解释。 这里有一些用于说明场景的伪代码:
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
答案 0 :(得分:0)
在不可变结构中包含可变数据几乎总是一个坏主意。(以其他方式围绕它更有意义)。要避免这种情况,请使用Immutable.fromJS(数据)而不是Immutable.List(data)和Immutable.Map(数据) - 就像@mostruash建议的那样。