如何处理离线数据的 ngrx/存储?



我是 Redux 的新手,从 ngrx 开始。我无法理解商店的概念和他的目的。

假设我有书店应用程序。我可以向用户购买或出售书籍。

我使用 ngrx 获取我使用此操作的书籍列表:LOAD_BOOKS,然后我使用效果从 http 加载书籍列表并将其保存回商店。

当我进入/books时,在加载组件之前,我有警卫。 在这个守卫中,我检查书单是否在商店中(如果没有,我会发送LOAD_BOOKS操作),加载列表后,我渲染显示所有书籍的组件(来自商店)

下次我再次进入/books时,列表在商店中。

所以我明白我不需要调用我的 http 来给我带来这个列表,因为我在商店里有这个列表。

但是,如果别人买了其中一本书会发生什么?我的商店可用书籍列表没有更新。

我从来没有更新过,因为它已经在商店里了。

所以我的问题是我应该如何处理这种情况? 存储什么,不存储什么? 如果不存储数据,此存储的目的是什么。 问题是当服务器内部的数据发生变化时该怎么办?我处理"离线"数据

因此,在第一种情况下,它的常见问题不仅是指存储服务器数据更改,客户端不会因使用 http 而自动更新,为此您应该使用广播,例如 websocket。

store的目的是更改应用程序体系结构,以便它具有单一事实来源,如果多个与父>子无关的页面组件需要相同的数据,您将它们与 store 连接,并且每次存储数据更改时,您都会更新组件数据。因此,如果您想象如果页面上有许多具有不同关系的组件,则无法使用简单服务重现相同的内容,则很难将它们绑定在一起,并且当其中一个发行版中的数据更新时,其余部分可能会出错。

商店没有为您提供神奇的方式来使服务器脱机工作,当无法连接到服务器时,您只需提醒用户他无法获取数据或执行操作,就像您使用http服务一样。

有关更多信息,我鼓励您阅读有关通量架构的信息,因为 redux 和 ngrx 都基于它。我认为它将明确商店提供的好处以及应该在哪种类型的应用程序中实现它。

最新更新