繁体   English   中英

如何有效地将Immutable.js Maps列表转换为纯js对象数组,以在React组件中使用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM