angular - 我应该为两个组件分离相同的实体集合吗?
问题描述
我在工作中面临以下问题:
在我工作的 SPA 中,我有任务实体和仪表板功能。此外,我的目标是使用 ngrx 商店和实体来处理应用程序中的状态管理。仪表板功能分为称为计划和表格的组件。
计划显示某些资源在某个时间跨度内已分配的任务。表是分页的,可能包含已按计划显示的任务。因此,这两个组件可以显示任务集合的联合子集。
此外,它们将共享通用状态(选择)和功能(从网格拖放到计划)。更重要的是,我们在 DB 中总共讨论了数千个任务,网格页面可能有多达 1000 个任务,日程表有时可以有数百个任务。
希望,我已经为我的问题提供了一些背景信息:这些任务是否应该存储在单个集合中(由 ngrx-entity 处理)以避免冗余?或者每个组件应该有单独的集合?如果应该有一个集合,如何从该集合中删除不必要的任务以避免加载所有实体到状态?
解决方案
ngrx 和 Flux 都是为了避免冗余,如果您需要在 2 个组件中使用相同的实体 - 那么您应该获得相同的实体,而不是从第二个集合之类的某个地方获得它的副本。
因为您需要针对不同组件的不同实体集,所以您需要考虑在商店中实现集/列表。例如,在一个状态中有 2 个附加变量,为每个组件存储一个 id 数组。首先,您选择 ids,其次您选择实体。它将帮助您保持数据的一致性。
删除不必要的实体,这是您需要自己实现的,例如,您可以执行删除 id 列表的操作,然后根据其他列表,您可以检测应该从实体集合中删除哪些实体。
推荐阅读
- python-3.x - 熊猫时间序列选择单个日期
- node.js - 使用nodejs通过_id在mlab集合中查找和修改obejct
- javascript - 异步渲染 react-native
- node.js - 如何使用 bcrypt 和 nodeJS 生成哈希作为全局变量
- excel - Excel - 在一个单元格中过滤多个日期/#s
- c++ - 判断一个类型是否是类类型?
- php - 如何确定 Composer autoload.php 加载了哪些库
- python - Dask 异步处理,在结果到达时打印结果
- angularjs - AngularJs - ng-class 不工作
- php - preg_match 如何返回 1