Javascript React Redux,将存储连接到1000个微小组件

Javascript React Redux,将存储连接到1000个微小组件,javascript,reactjs,react-redux,Javascript,Reactjs,React Redux,我在react redux中遇到了一个性能问题,我读了一些关于react redux的文章,根据我最终得到的结果,“似乎”我所做的一切都“正确” 我有一个生产线跟踪系统,每个“项目”有12个步骤。 我每周都有大约60-100个项目在进行,分为几天,在一个视图上很容易看到 现在的问题在于,这12个步骤中的每一个都是我使用React-Redux Connect函数连接的单独组件,它基本上映射了所有不同步骤的平面存储状态,并从存储中搜索出确切的步骤,其中包含关于何时完成、其状态等的数据,然后它把它作为

我在react redux中遇到了一个性能问题,我读了一些关于react redux的文章,根据我最终得到的结果,“似乎”我所做的一切都“正确”

我有一个生产线跟踪系统,每个“项目”有12个步骤。 我每周都有大约60-100个项目在进行,分为几天,在一个视图上很容易看到

现在的问题在于,这12个步骤中的每一个都是我使用React-Redux Connect函数连接的单独组件,它基本上映射了所有不同步骤的平面存储状态,并从存储中搜索出确切的步骤,其中包含关于何时完成、其状态等的数据,然后它把它作为道具扔进去,然后用它来渲染

现在,每次我在步骤列表的存储中创建一个更新,它都会明显地重新启动那些aprox 1000组件,并检查它们是否需要重新启动,比如说,只有其中一个需要重新启动,我点击的那个

然而,通过1000个mapToState函数循环的整个计算部分需要时间,并且会减慢应用程序的速度,使其不负责任

是否有更聪明的方法将组件连接到商店

值得注意的是,我在写这篇文章之前很久就考虑过这一点,我也尝试只映射每个项目(每组12个步骤),然后让他们作为父级渲染基于此的纯组件,将每个单独的步骤和数据一起发送给子组件,但是,我没有得到更好的结果

提前感谢任何能给我提供指导或将我推向正确方向的人


Vincent Rye

我目前正处于这种情况,也在寻找一个明确的答案,但我将分享到目前为止我得出的结论:

要使web应用达到每秒60帧的目标,每帧预算为16.67毫秒

如果您有1000个已连接的组件,则在每个组件的每次商店更新时都会发生一定量的redux记账(如运行
MapStateTops
),并且要保持在16.67毫秒的框架预算内,您需要平均在0.017毫秒(或17000毫秒)内进行记账


根据经验,我们很难做到这一点。

您可能想看看@reselect and Memorized selectors:您的组件是否利用了
shouldComponentUpdate
来最小化实际需要?是的,每个组件都在使用shouldComponentUpdate与loDash的isEqual进行比较。因此,实际渲染非常低,但仍需要一段时间。我会看一看重新选择和记忆