所以我有以下形式的Immutable.js:
let o = immutable.Map({a: {b: 1}})
所以我的问题是,它是否有效:
o.get('a').b = 2
将仅返回值集,但不返回新的引用...:/
或建议修改Immutable地图内对象文字内部状态的其他模式?
如果有人可以扩展immuatble.js与对象文字和建议混合的模式(如果有的话),我将不胜感激......
一如既往,
肖恩。
答案 0 :(得分:1)
你认为内部对象文字是可变的是正确的。您可以将其测试为:
var o = immutable.Map({a: {b: 1}})
o.get('a').b = 2;
// b will now be mutated in o;
如果你想创建一个完全不可变的对象,可以使用Immutable提供的fromJS方法,它将进行深度转换,或者将a的值设置为Map。
编辑添加:关于适当的模式,我建议完全不可变,因为它维护任何内部对象/数组也是不可变的契约。