将Redux Store中的数据存储在另一个数据结构中

时间:2016-02-19 03:13:33

标签: javascript reactjs firebase lodash redux

我的应用将Firebase中的数据加载到Redux商店中。它作为包含几百个嵌套对象的对象加载。

为了渲染该数据的表组件(特别是this one),我必须将其转换为对象数组。

我目前的解决方案是简单地在表格组件mapStateToProps()中进行转换(使用lodash库):

function mapStateToProps(state) {

    return {
        listingsData: _.values(state.config)
    }
}

这似乎有效,我在Firebase仪表板中所做的更改几乎立即在我的应用中成功呈现。

我的问题是:这种做事方式是否会导致我的应用(数组+商店)的内存消耗增加2倍?

这不是几百行的问题,但我希望有些用户拥有数千行数据。

如果是2倍内存,有没有更有效的方法呢?

ETA:我认为这个答案在未来可能仍然有用,但回想起来我应该只写一点测试。此测试支持下面接受的答案:

var x = {a:{var:1}, b:{var:2}, c:{var:3}};
var y = _.values(x);

console.log(x, y); //values match

x.a.var = 99;

console.log(x, y); //values still match

1 个答案:

答案 0 :(得分:1)

尽管我理解来自loadash的_.values函数(避免使用loadash),但在你的情况下,你的内存不会加倍(克隆对象),而是创建对你所拥有的对象的引用数组商店哪儿没事。

您可能需要考虑的是在引用之前过滤这些对象,而不是始终创建对每个对象的引用。