我有一个普通的javascript对象,我想使用"fromJS()“将其转换为不可变的Map。然而,我希望我的字段之一,Supplier.selectedIndices是一个Set()。默认情况下,fromJS()将其转换为List()。我可以在我的普通Javascript对象中启动Set()对象吗?
这是很好的做法吗?请给我建议。谢谢!
export const initialState = fromJS({
Inventory: {
inventory: [],
selectedInventory: [],
},
Supplier: {
suppliers: [],
selectedIndices: Set(),
},
});发布于 2017-08-20 15:42:03
要回答标题,在混合对象上使用fromJS是安全的。The 医生们提到
fromJS的转换是保守的。它只将传递Array.isArray的数组转换为列表,只将原始对象(没有自定义原型)转换为Map。
不可变集合不符合这些标准。
为了回答您问题的主体,fromJS提供了一个reviver
如果可选地提供了一个修复程序,那么它将以Seq的形式与每个集合一起调用(从最嵌套的集合开始,然后继续到顶层集合本身),以及引用每个集合的键和提供的父JS对象。对于顶层的对象,关键是"“。预计此修复程序将返回一个新的不可变集合,允许从深度JS对象进行自定义转换。最后,提供一个路径,该路径是从起始值到该值的键序列。
reviver函数应该能够检测您的字段(使用值类型或不可变提供的路径)并创建一个Set。
https://stackoverflow.com/questions/45783718
复制相似问题