![](/img/trans.png)
[英]How do I transform a List of Maps into a Map of Maps in immutable.js?
[英]How do I efficiently convert an Immutable.js List of Maps to an array of plain js objects for use in a React component?
考虑以下代码:
import { fromJS } from "immutable"
const initialState = fromJS({
radiusFilters: [
{ label: "1mi", value: 1 },
{ label: "2mi", value: 2 },
...
],
locationOptionFilters: [
{ label: "State", value: "STATE" },
{ label: "City", value: "CITY" },
...
]
}
第三方库react-select
维护将Select元素的道具作为对象数组传递,因此对我而言,在某些时候将上述结构转换为它们的纯JavaScript等效项对我来说是有意义的。 这些将是大型结构,并且我希望在将带有功能组件的react-redux
结合使用时自动运行的浅层检查尽快运行(因此,我坚持使用Immutable
)。
const radiusFilterSelector = (state) => state.searchFilters.get("radiusFilters")
export const getRadiusFilters = createSelector([ radiusFilterSelector ],
radiusFilters => {
return radiusFilters.toJS()
}
)
在我的React容器的mapStateToProps
函数中,我将调用必要的选择器(看起来与上面的类似)来填充传递给组件的道具。
使用fromJS()
和toJS()
fromJS()
性能产生影响。
如果您只对浅表比较感兴趣,则可以使用Map()
而不是fromJS()
设置初始状态,并在需要将其转换回供库使用时使用toArray()
而不是toJS()
。
但是,除非您知道性能会导致瓶颈,否则我不会担心性能。 请参阅优化何时过早?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.