何时使用apollo-link-state以及何时使用apollo-cache-inmemory

时间:2018-05-31 18:10:45

标签: javascript reactjs graphql apollo react-apollo

我们正在慢慢将graphql添加到我们的react项目并替换现有的redux集成。所以我试图了解apollo中的缓存并看到两件事。

  1. apollo-cache-inmemory(https://www.npmjs.com/package/apollo-cache-inmemory
  2. apollo-link-state(https://github.com/apollographql/apollo-link-state
  3. 我们有查询在主页上调用应用列表,此应用列表将在其他页面上使用。所以我尝试的一个选项是在父容器中调用应用程序列表查询并在子页面中使用client.readQuery,这样对graphql服务器的调用只会在容器中发生,而在其他页面中则会发生从缓存中调用。但我看到一些关于在类似情况下使用apollo-link-state的帖子。那么在这里使用什么是最好的方法以及何时使用apollo-cache-inmemory以及何时使用apollo-link-state?

1 个答案:

答案 0 :(得分:3)

您不应将apollo-cache-inmemory直接与apollo-link-state进行比较。 apollo-cache-inmemory用于处理Apollo Client上的缓存,您不必为其编写任何自定义代码(除了告诉Apollo Client使用它)。您从api获取的所有数据都会自动缓存。

然而,

apollo-link-state用于客户端缓存,例如浏览器的NetworkStatus或当前活动选项卡。通常不会发送回后端服务器的国家。

因此,您只需要考虑是否需要客户端缓存。在我看到的大多数情况下,一个项目最终会最终使用这两个。