我们想知道我们是否理解如何在apollo中查询权利。我们的目标非常简单:我们需要在我们的应用程序中的2个不同位置使用graphQL的数据。如果数据准备就绪,两个地方都需要完成结果的信息和信息。
所以问题是现在在apollo中做到这一点的最佳方法是什么?我们无法在文档中找到示例。
问题:这将导致查询将执行两次。我的意思是 - 当然 - 因为我们称之为两次。但我们认为apollo会注意到我们使用相同的参数调用相同的查询。
存放在自己的商店 是否有必要将信息存储在我们自己的redux商店中?如果是,我们需要用查询包装我们的第一个组件,并在信息仍然加载和查询结果时存储信息。
访问apollo商店 有没有推荐的方法用另一个HOC包装组件来获得apollo商店?你将如何使用"仍在获取"的信息来访问正确的查询。和"结果"
如果能够像1中所描述的那样做,我们会很高兴,但据我们所知,这是不可能的。如果你能告诉我Apollo-Way的做法,那将是很好的
修改 我们遇到的问题尚未解决。我在github上发现了这个问题。所以他们知道这是一个问题"但尚未解决。因此,我们需要更改组件逻辑和调用查询。
参考: https://github.com/apollographql/apollo-android/issues/646
答案 0 :(得分:0)
我们使用相同的高阶分量(HOC)方法,并且运行良好。
如果您的目标是避免两次调用相同的查询,则可以将fetchPolicy
设置为仅从缓存中提取的其他选项之一。
那就是说,你确定查询实际上是通过网络被调用了两次吗?或者仅在没有网络请求的情况下调用两次操作(请查看Chrome开发工具中的Network
标签)?
Apollo的默认行为是cache-first
,因此您可能会看到操作但不是实际的网络请求:
cache-first:这是默认值,我们总是首先尝试从缓存中读取数据。 如果完成查询所需的所有数据都在缓存中,那么将返回该数据。如果缓存结果不可用,Apollo将仅从网络中获取。此提取策略旨在最大限度地减少呈现组件时发送的网络请求数。
更新:另一个选项是query batching,这应该可以解决这个问题。