我是Immutable.js的新手,所以这是一个非常微不足道的问题。
看起来我无法像普通的旧Javascript对象那样获得Map值,例如: myMap.myKey
。显然我必须写myMap.get('myKey')
我对这种行为感到非常惊讶。这有什么理由吗? Immutable.js是否有任何扩展名允许我输入myMap.myKey
?
答案 0 :(得分:1)
回过头来详细说明我的评论,但是在一定时间之后SO不允许这样做。将其转换为答案。
你提出的问题已经多次回复了那些以不可改变的方式开始新事物的人,真正包括在内的人。我刚刚在one of the rants写过。
从不变性的角度来看,它开始有意义。如果将值类型公开为您自己的属性,它们将不是不可变的,因为它们是值类型并且可以分配给它们。
尽管如此,将这些吸气剂传播到您的组件/视图中仍然令人沮丧。如果你负担得起,你应该尝试use the Record
type。它提供对成员的传统访问(IE 8除外)。更好的是,您可以从此类型扩展并添加辅助getter / setter(例如user.getName()
,user.setName('thebat')
而不是user.get('name')/set('name', 'thebat')
)以从您的视图中抽象模型的内部结构。然而,像嵌套结构和对象的反序列化一样需要克服一些挑战。
如果以上不是你的一杯茶,我建议吞下苦药:)。
答案 1 :(得分:0)
我认为你错过了Immutable is build的概念:
创建后不可更改不可变数据,导致更简单 应用程序开发,无防御性复制,并启用高级 用简单的逻辑记忆和改变检测技术。 持久性数据提供了一个不更新数据的变异API 就地,但总是产生新的更新数据。
您可以通过这种或那种方式将不可变数据结构转换为普通的旧JS对象:myMap.toJS()