这是我扩展 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
实例中字段是否存在有效值的正确方法是什么?
最佳答案
您明确将每个字段的默认值设置为函数 字符串
。如果您是这么想的话,String
这里不是数据类型。您似乎想要的是
const DATA_DEFAULTS = {
id: '',
data: '',
ref_id: '',
};
<小时/>
1) Can I set a default value in a Immutable.Record?
正如您已经所做的那样,您只需设置正确的默认值即可。
<小时/>2) How to filter on field that may or may not exist in the Immutable.Record
记录上的字段始终存在。来自 docs :
<小时/>Records always have a value for the keys they define. removeing a key from a record simply resets it to the default value for that key.
3) What is the right way to test the existence of valid value in a field in an instance of
Immutable.Record
?
您可以使用您知道不会显式分配给该字段的默认值。这可能是 null
或符号。
关于javascript - 如何设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37430504/