1

我正在apollo-client使用apollo-cache-inmemory.

假设我有 2 个页面:项目列表页面和项目详细信息页面。

显示项目列表页面(通过使用以下方式获取数据client.query(...)

  • 项目 A
  • B项
  • 项目 C

当导航到项目 B 的项目详细信息store.readQuery页面时,我使用涉及并store.writeQuery在此处描述的突变技术对项目 B 进行了突变: https ://www.apollographql.com/docs/react/caching/cache-interaction/#updating-after-a -突变

现在,在导航回项目列表页面之前,假设我的应用程序的另一个用户对项目 A 进行了突变。

我的问题:

  1. 当我导航回项目列表页面时,我是从缓存中获取数据还是从服务器获取数据?是否client.query(...)总是从服务器获取数据?

  2. 如果我从缓存中获取数据,我该如何保持与服务器的数据一致性?(目标是始终在列表中显示更新的项目,例如项目 A - 在优化缓存的同时与服务器同步)

4

1 回答 1

2

如果您想保持数据同步,即使它被其他用户更改,您需要始终从服务器获取或在服务器和客户端上实现订阅。这样,您就可以在数据更改时推送新事件,并让客户端订阅这些更改以实时保持缓存更新。

于 2020-05-23T10:58:09.977 回答