我的应用将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
答案 0 :(得分:1)
尽管我理解来自loadash的_.values函数(避免使用loadash),但在你的情况下,你的内存不会加倍(克隆对象),而是创建对你所拥有的对象的引用数组商店哪儿没事。
您可能需要考虑的是在引用之前过滤这些对象,而不是始终创建对每个对象的引用。