Redux 使用状态中的大型实体重新执行

Redux 使用状态中的大型实体重新执行,redux,immutable.js,Redux,Immutable.js,我有一个redux应用程序。在第一次加载(初始状态)时,我从服务器获取数据并将其放入存储。应用程序具有名为“任务”的实体。如果这个任务有500个,那么这个应用程序可以完美(快速)工作。但是,如果任务超过2000个,我会看到工作速度减慢。此“任务”使用不同的区域。 我可以优化我的应用程序吗?我不想为不同的区域调用API,因为这些区域使用类似的“任务”。 我读过关于immutable.js的文章。这是不是可能的方式? 非常感谢。存储中实体或JS对象的实际数量本身并不重要,问题在于您的代码如何处理这些

我有一个redux应用程序。在第一次加载(初始状态)时,我从服务器获取数据并将其放入存储。应用程序具有名为“任务”的实体。如果这个任务有500个,那么这个应用程序可以完美(快速)工作。但是,如果任务超过2000个,我会看到工作速度减慢。此“任务”使用不同的区域。 我可以优化我的应用程序吗?我不想为不同的区域调用API,因为这些区域使用类似的“任务”。 我读过关于immutable.js的文章。这是不是可能的方式?
非常感谢。

存储中实体或JS对象的实际数量本身并不重要,问题在于您的代码如何处理这些实体。如果每次组件重新渲染时都要执行昂贵的转换或过滤选项,那么是的,实体数量的增加会降低速度。此外,使用Immutable并不能神奇地提高速度——它可以使某些操作更快,但它本身有开销,并且可能被误用

我将向您介绍一些提高Redux性能的资源:

  • 我的博客帖子
  • 一个叫做
  • 我的文章部分的文章

没有看到您的代码,很难给出建议谢谢您的回复。但这是唯一的架构问题。我把商店想象成一个数据库。和所有操作-仅“过滤”操作。你真的会在屏幕上同时有2000个任务吗?听起来您正在进行过早的优化,如果这只是一个思考过程,那么在您首先编写代码之前您不会知道。根据您的设计,您应该能够调整您的解决方案,如果它真的是slowNo。在屏幕上,用户可以看到最多150个任务(对于当前项目)。但其他任务(来自其他项目)可能位于当前屏幕上的其他区域(例如,“重要”任务或“通知”任务)。当然,我可能会为此领域调用API(重要的,通知)。但从一个存储区获取任务(“单一真实来源”)是一个更简单的变体。不是吗?我想这真的取决于你如何设计你心目中的商店谢谢你的回复。这是一个对我非常有用的链接。我的目的-不是为不同的区域(重要任务区域、通知任务区域)调用API,而是从一个源存储中获取此任务(通过字段“重要”、“通知”对其进行简单筛选)。是的,我更改了这个任务(例如-排序)和mutate store(state=“tasks”)。如果我简单地更新我的存储,我将覆盖此任务状态(2000个对象)。