代码之家  ›  专栏  ›  技术社区  ›  Tom Schreck

用于列表和详细数据对象的NGRX存储

  •  0
  • Tom Schreck  · 技术社区  · 6 年前

    我对NGRX很陌生,我正试图把我的头绕起来。我理解目标是在不同类型的状态下拥有一个数据存储。我试图理解如何处理数据列表。

    情景1 : 用户首先导航到一个列表,在这种情况下,会触发一个效果来从后端/api检索列表。成功后,列表被保存到存储中,并且UI组件通过 | async 并呈现列表。用户单击项目以查看详细信息。我们可以将所选项目的ID存储在存储中,然后简单地使用筛选机制从存储中的列表数组中检索详细数据。或者,我们可以对服务器进行另一个效果调用,以获得详细的有效负载。我假设这里的决策点是列表是否包含详细信息页面所需的所有数据?

    情景2 :假设存储中的列表包含详细信息页所需的所有数据,并且用户单击列表中的项目只需将所选项目的ID保存到存储中,然后导航到详细信息页,在该页中,仅根据中的所选项目ID从列表中筛选详细信息数据。商店,当用户刷新详细页面上的浏览器URL时会发生什么?发生这种情况时,列表不再位于存储区中,所选项目的ID也不再位于存储区中。但是,所选项目的ID位于URL和路由中。您如何处理这种情况?是否重新生成列表以检索详细信息记录?

    情景3 :处理一个场景的最佳方法是什么?在这个场景中,整个列表中有不同的数据子集。也许您需要查看一个“待定”的项目列表和本周创建的另一个项目列表,等等。将所有记录作为主列表下载到存储中似乎效率很低,然后简单地筛选出不同视图所需的记录。我读过一些教程,其中你在商店里有主列表,然后在商店的另一个组成不同部分的ID。这看起来很重,而且在客户机上复制了数据库。在商店中筛选列表的最佳方法是什么?

    感谢您的帮助和洞察力。

    1 回复  |  直到 6 年前
        1
  •  2
  •   timdeschryver    6 年前

    场景1:你在现场!

    场景2:视情况而定。

    • 您可以将数据存储在 localStorage 例如
    • 必须通过后端API获取列表

    场景3:保持状态规范化是这里的关键(您将使用ID)。另外,我们不必一次加载所有实体,这可以部分完成。 The redux docs 有一个性能部分,您可以阅读。