将 Redux Store 中的数据存储在另一个数据结构中
Storing Data from Redux Store in Another Data Structure
我的应用程序将数据从 Firebase 加载到加载时的 Redux 存储中。它加载为包含数百个嵌套对象的对象。
为了为该数据呈现 table 组件(具体来说,this one),我必须将其转换为对象数组。
我目前的解决方案是像这样在 table 组件 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
据我了解来自 loadash 的 _.values 函数(尚未使用 loadash),在您的情况下,您不是将内存加倍(克隆对象),而是创建对这些对象的引用数组有店就可以了
您可能需要考虑的是在引用之前过滤这些对象,而不是始终创建对每个对象的引用。
我的应用程序将数据从 Firebase 加载到加载时的 Redux 存储中。它加载为包含数百个嵌套对象的对象。
为了为该数据呈现 table 组件(具体来说,this one),我必须将其转换为对象数组。
我目前的解决方案是像这样在 table 组件 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
据我了解来自 loadash 的 _.values 函数(尚未使用 loadash),在您的情况下,您不是将内存加倍(克隆对象),而是创建对这些对象的引用数组有店就可以了
您可能需要考虑的是在引用之前过滤这些对象,而不是始终创建对每个对象的引用。