如何设置默认值

时间:2016-05-25 07:29:50

标签: javascript immutable.js

以下是我如何扩展Immutable.Record

import Immutable from 'immutable';

const DATA_DEFAULTS = {
  id: String,
  data: String,
  ref_id: String,
};

export default class Data
  extends Immutable.Record(DATA_DEFAULTS) {} 

如果json表示不包含ref_id,那么当我尝试在Chrome devtool的控制台中打印字段的值时,我会得到:

> data.ref_id
String() { [native code] }

我认为这就是为什么我无法过滤出列表中空ref_id的实体

a = [] // a list of data
b = a.filter(x => x.ref_id != '')  // b is the same as a

我想它可以通过以下方式解决:

  • 在json数据中缺少字段时,为Immutable.Record实例中的字段设置默认值

  • 使用另一种方法来检测实例中是否未设置字段

对于第二种方法,我尝试了data.has('ref_id'),并且无论字段是否具有任何有效值,它都会始终报告true

我的问题:

1)我可以在Immutable.Record中设置默认值吗?

2)如何过滤Immutable.Record

中可能存在或不存在的字段

3)在Immutable.Record的实例中测试字段中是否存在有效值的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您明确将每个字段的默认值设置为功能 StringString这里不是数据类型,如果这是您的想法。你似乎想要的是

const DATA_DEFAULTS = {
  id: '',
  data: '',
  ref_id: '',
};
  

1)我可以在Immutable.Record中设置默认值吗?

您的确如何做,只需设置正确的默认值。

  

2)如何过滤Immutable.Record中可能存在或不存在的字段

记录中的字段始终存在。来自docs

  

记录始终具有其定义的键的值。从记录中删除密钥只是将其重置为该密钥的默认值。

  

3)在Immutable.Record的实例中测试字段中是否存在有效值的正确方法是什么?

您可以使用您知道不会明确分配给该字段的默认值。这可能是null或符号。