我对 NgRx 非常陌生,正在尝试了解它。我知道目标是拥有一个存储不同类型状态的数据存储。我正在尝试了解如何使用数据列表。
场景 1:
用户首先导航到列表,在这种情况下会触发效果以从后端/API 检索列表。成功后,列表将保存到存储中,并且 UI 组件通过 | 响应可观察的内容。 async
并呈现列表。用户单击某个项目即可查看详细信息。我们可以将所选项目的 Id 存储在商店中,然后简单地使用过滤机制从商店中的列表数组中检索详细数据。或者,我们可以对服务器进行另一个效果调用以获取详细的有效负载。我假设这里的决策点是列表是否包含详细信息页面所需的所有数据?
场景 2:假设商店中的列表包含详细信息页面所需的所有数据,并且用户单击列表中的某个项目只需将所选项目的 ID 保存到商店,然后导航到详细信息页面,其中详细数据只是根据商店中选定的商品 ID 从列表中过滤出来,当用户刷新详细信息页面上的浏览器 URL 时会发生什么?发生这种情况时,列表不再在商店中,所选项目的 ID 也不再存在。但是,所选项目的 id 位于 URL 和路由中。您如何处理这种情况?您是否重建列表以检索详细记录?
场景 3:处理整个列表中具有不同数据子集的场景的最佳方法是什么。也许您需要查看“待处理”的项目列表以及本周已创建的另一个项目列表等。将所有记录下载到商店作为主列表,然后简单地过滤掉所需的记录似乎非常低效对于不同的看法。我读过一些教程,其中您在商店中拥有主列表,然后只需在商店的另一部分中拥有组成不同切片的 ID。这看起来非常繁重,并且将数据库复制到客户端上。在商店内过滤列表的最佳方法是什么?
感谢您的帮助和见解。
最佳答案
场景 1:你说对了!
场景 2:视情况而定。
- 例如,您可以将数据存储在
localStorage
中 - 必须通过后端 API 获取列表
场景 3:保持状态标准化是这里的关键(您将使用 ID)。此外,我们不必一次加载所有实体,这可以部分完成。 The redux docs有一个您可以阅读的性能部分。
关于angular6 - 用于列表和详细数据对象的 NgRx 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53023804/