为什么不可变映射和记录的属性访问器方法不同?

时间:2017-04-10 15:41:48

标签: redux react-redux immutable.js

我将Reutable +与React + Redux结合使用。在大多数情况下,我真的很喜欢它如何强化Redux范例,除了它的属性访问方法。

对于Immutable Map,必须使用Immutable get方法访问属性。

实施例。 this.props.exampleMap.get('mapProperty');

但是,对于Immutable Record,没有get方法。相反,您只需使用点方法访问属性,就像使用普通的JS对象一样。

实施例。 this.props.exampleRecord.recordProperty

我的问题是,为什么会出现这种差异?这让我有点强迫症,因为我的组件现在充满了两种方法,坦率地说它有点难看。

1 个答案:

答案 0 :(得分:1)

您实际上可以将.get(...)用于不可变记录。我想到的方式是,通过允许您直接访问属性,记录具有更好的语法。

如果您是记录的take a look at the type definitions,您将看到记录构造函数创建类型为Immutable.Map<string, any>的对象。

这种更好的语法是可行的,因为您在创建时预定义了记录的属性。

以下是directly from their docs

的不可变记录创建示例
const { Record } = require('immutable')
const ABRecord = Record({ a: 1, b: 2 })
const myRecord = new ABRecord({ b: 3 })

请记住,您为Record函数提供了一个具有默认值的对象,并返回一个可用于创建new对象的构造函数。