我将Reutable +与React + Redux结合使用。在大多数情况下,我真的很喜欢它如何强化Redux范例,除了它的属性访问方法。
对于Immutable Map
,必须使用Immutable get
方法访问属性。
实施例。 this.props.exampleMap.get('mapProperty');
但是,对于Immutable Record
,没有get方法。相反,您只需使用点方法访问属性,就像使用普通的JS对象一样。
实施例。 this.props.exampleRecord.recordProperty
我的问题是,为什么会出现这种差异?这让我有点强迫症,因为我的组件现在充满了两种方法,坦率地说它有点难看。
答案 0 :(得分:1)
您实际上可以将.get(...)
用于不可变记录。我想到的方式是,通过允许您直接访问属性,记录具有更好的语法。
如果您是记录的take a look at the type definitions,您将看到记录构造函数创建类型为Immutable.Map<string, any>
的对象。
这种更好的语法是可行的,因为您在创建时预定义了记录的属性。
的不可变记录创建示例const { Record } = require('immutable') const ABRecord = Record({ a: 1, b: 2 }) const myRecord = new ABRecord({ b: 3 })
请记住,您为Record
函数提供了一个具有默认值的对象,并返回一个可用于创建new
对象的构造函数。