Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将来自Redux Store的数据存储在另一个数据结构中_Javascript_Reactjs_Firebase_Lodash_Redux - Fatal编程技术网

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

Javascript 将来自Redux Store的数据存储在另一个数据结构中,javascript,reactjs,firebase,lodash,redux,Javascript,Reactjs,Firebase,Lodash,Redux,我的应用程序在加载时将数据从Firebase加载到Redux存储中。它作为包含几百个嵌套对象的对象加载 为了为该数据呈现一个表组件(特别是),我必须将其转换为一个对象数组 我当前的解决方案是在表组件mapstatetrops()中简单地转换它,如下所示(使用lodash库): 这似乎有效,我在Firebase仪表板中所做的更改几乎立即成功地在我的应用程序中呈现 我的问题是:这种做法是否会导致我的应用程序(阵列+商店)内存消耗增加2倍 这对于几百行来说不是问题,但是我希望一些用户有几千行数据 如果

我的应用程序在加载时将数据从Firebase加载到Redux存储中。它作为包含几百个嵌套对象的对象加载

为了为该数据呈现一个表组件(特别是),我必须将其转换为一个对象数组

我当前的解决方案是在表组件
mapstatetrops()
中简单地转换它,如下所示(使用
lodash
库):

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

我的问题是:这种做法是否会导致我的应用程序(阵列+商店)内存消耗增加2倍

这对于几百行来说不是问题,但是我希望一些用户有几千行数据

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

埃塔:我认为这个答案在将来可能仍然有用,但现在回想起来,我应该写一个小测试。本测试支持以下可接受答案:

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中的u0.values函数(没有使用loadash),在您的情况下,您不是在加倍内存(克隆对象),而是在存储中创建对这些对象的引用数组,这是正确的


你想考虑的是在引用之前过滤那些对象,而不是总是对每个对象创建引用。参考每个obj是否都是次优的、性能方面的?我最终将包含一个使用用户定义参数的过滤器,我本打算将其放在mapStateToProps中——这就是您的意思吗?如果您有过滤数据的参数(可能是状态或静态),您可以在将状态传递给组件之前过滤状态。这是一个比一般性能更复杂的体系结构问题,但在您的例子中,问题是您需要引用每个对象还是只引用一些对象?你会使用每件物品吗?若并没有,你们可以创建一个只包含你们需要的对象的列表。数据基本上是用户记录的列表,因此当前预期的用户体验是用户在加载时以表格形式看到所有记录,然后可以根据需要应用过滤器。如果我理解正确,如果我稍后确定用户只对第一次加载时记录的某些子集感兴趣,我认为您在传递到组件之前进行过滤的方法听起来是最佳的。

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