首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在已经部分包含不可变对象的对象上使用不可变的fromJS()吗?

问可以在已经部分包含不可变对象的对象上使用不可变的fromJS()吗?
EN

Stack Overflow用户
提问于 2017-08-20 15:19:06
回答 1查看 795关注 0票数 0

我有一个普通的javascript对象,我想使用"fromJS()“将其转换为不可变的Map。然而,我希望我的字段之一,Supplier.selectedIndices是一个Set()。默认情况下,fromJS()将其转换为List()。我可以在我的普通Javascript对象中启动Set()对象吗?

这是很好的做法吗?请给我建议。谢谢!

代码语言:javascript
复制
export const initialState = fromJS({
  Inventory: {
    inventory: [],
    selectedInventory: [],
  },
  Supplier: {
    suppliers: [],
    selectedIndices: Set(),
  },
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-20 15:42:03

要回答标题,在混合对象上使用fromJS是安全的。The 医生们提到

fromJS的转换是保守的。它只将传递Array.isArray的数组转换为列表,只将原始对象(没有自定义原型)转换为Map。

不可变集合不符合这些标准。

为了回答您问题的主体,fromJS提供了一个reviver

如果可选地提供了一个修复程序,那么它将以Seq的形式与每个集合一起调用(从最嵌套的集合开始,然后继续到顶层集合本身),以及引用每个集合的键和提供的父JS对象。对于顶层的对象,关键是"“。预计此修复程序将返回一个新的不可变集合,允许从深度JS对象进行自定义转换。最后,提供一个路径,该路径是从起始值到该值的键序列。

reviver函数应该能够检测您的字段(使用值类型或不可变提供的路径)并创建一个Set。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45783718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档