apollo useQuery 何时进行查询?

问题描述

我们可以在 Apollo 文档中阅读以下内容..

认情况下,useQuery 钩子检查 Apollo 客户端缓存以查看是否 您请求的所有数据都已在本地可用。如果所有数据 在本地可用,useQuery 返回该数据并且不查询 你的 GraphQL 服务器。这个缓存优先策略是 Apollo Client 的 获取策略。

假设我有一个页面,可以在其中加载人们添加的所有书籍。假设用户 A 正在查看此屏幕。 userB 现在添加一个新的。

问题:

  • 如果 userA 刷新页面,他/她会看到添加的新书吗?会进行查询吗?
  • 我真的不明白阿波罗是什么意思if all data is available locally。 Apollo 如何知道所有数据是否已经可用?有人可以同时添加它。

解决方法

如果您将其设置为使用 Apollo 缓存,则默认情况下用户 A 将不会听到用户 B 的新书。有几种方法可以解决这个问题:

  1. 每 x 分钟轮询一次服务器
  2. 设置对服务器的订阅
  3. 通知前端可通过单独订阅获得更新