0

假设有任务和项目。有时用户想查看他/她的所有任务,有时还想查看属于某个项目的任务。当所有任务在开始时加载时,所有这些不同的视图可能只使用 NgRx 选择器从任务实体集合中获取必要的内容(同时 NgRx 效果 + Firestore stateChanges 将负责更新)。

但是,如果我不想在一开始就加载所有任务(因为它们太多了)我应该如何解决这个问题?

我应该只在任务实体集合中存储“当前视图的列表”并在用户切换到另一个视图时将其清空吗?

我应该加载当前所需的内容,将其附加到任务实体集合并使用选择器吗?但是,通过这种方式,我不确定如何处理更新(因为我猜想在所有 prevoius 查询上监听 stateChanges 可能有点矫枉过正)。

有没有更好的选择?

4

1 回答 1

0

这里可能没有正确或错误的答案,但我们是这样做的:

  • 有一个实体列表,并在需要加载新实体时将它们附加到列表中
  • 同一个列表也可以在需要时更新实体(@ngrx/entitiesupsertMany让这变得简单)
  • 有一个存储可见实体 ID 的“当前列表”
  • 有一个选择器来根据可见实体 ID 选择当前实体

状态如下所示:

{
   entities: {...},
   entitiesById: {...},
   visibleEntitiesIds: {...}
}
于 2018-09-30T08:17:46.440 回答