首页 > 解决方案 > 我应该为两个组件分离相同的实体集合吗?

问题描述

我在工作中面临以下问题:

在我工作的 SPA 中,我有任务实体和仪表板功能。此外,我的目标是使用 ngrx 商店和实体来处理应用程序中的状态管理。仪表板功能分为称为计划和表格的组件。

计划显示某些资源在某个时间跨度内已分配的任务。表是分页的,可能包含已按计划显示的任务。因此,这两个组件可以显示任务集合的联合子集。

此外,它们将共享通用状态(选择)和功能(从网格拖放到计划)。更重要的是,我们在 DB 中总共讨论了数千个任务,网格页面可能有多达 1000 个任务,日程表有时可以有数百个任务。

希望,我已经为我的问题提供了一些背景信息:这些任务是否应该存储在单个集合中(由 ngrx-entity 处理)以避免冗余?或者每个组件应该有单独的集合?如果应该有一个集合,如何从该集合中删除不必要的任务以避免加载所有实体到状态?

标签: angulararchitecturengrxngrx-storengrx-entity

解决方案


ngrx 和 Flux 都是为了避免冗余,如果您需要在 2 个组件中使用相同的实体 - 那么您应该获得相同的实体,而不是从第二个集合之类的某个地方获得它的副本。

因为您需要针对不同组件的不同实体集,所以您需要考虑在商店中实现集/列表。例如,在一个状态中有 2 个附加变量,为每个组件存储一个 id 数组。首先,您选择 ids,其次您选择实体。它将帮助您保持数据的一致性。

删除不必要的实体,这是您需要自己实现的,例如,您可以执行删除 id 列表的操作,然后根据其他列表,您可以检测应该从实体集合中删除哪些实体。


推荐阅读