我有一个简单的javascript对象,我想使用“fromJS()”转换为不可变的Map。但是,我想要一个字段Supplier.selectedIndices
为Set()
。默认情况下,fromJS()将其转换为List()
。我可以在我的普通Javascript对象中执行以下操作,启动Set()
对象吗?
这是好习惯吗?请指教。谢谢!
export const initialState = fromJS({
Inventory: {
inventory: [],
selectedInventory: [],
},
Supplier: {
suppliers: [],
selectedIndices: Set(),
},
});
答案 0 :(得分:0)
要回答标题,在混合对象上使用fromJS
是安全的。 docs sort of mention that:
fromJS的转换是保守的。它只会将传递Array.isArray的数组转换为Lists,并且只将原始对象(无自定义原型)转换为Map。
不可变的收藏品不符合这些标准。
要回答问题的正文,fromJS
提供了reviver
:
如果可选地提供了reviver,它将被调用每个集合作为Seq(从最嵌套的集合开始并继续到顶级集合本身),以及引用每个集合和父JS的键。这样提供的对象。对于顶级对象,密钥将是""。这个reviver应该返回一个新的Immutable Collection,允许从深层JS对象进行自定义转换。最后,提供了一个路径,它是从起始值到该值的键序列。
reviver
函数应该能够检测您的字段(使用值类型或Immutable提供的路径)并创建Set
。