GraphQL react-apollo - export/import 客户端可以直接使用吗?

GraphQL react-apollo - is it okay to export/import client directly?

我有一个 apollo 安装文件,services/apollo.js,我在其中导出客户端:

const client = new ApolloClient({
  cache,
  link: ApolloLink.from([stateLink, httpLink])
})

export default client

然后我将其导入并在其他地方正常使用它:

<BrowserRouter>
  <ApolloProvider client={client}>
    <App />
  </ApolloProvider>
</BrowserRouter>

如果我想直接使用客户端(例如手动触发查询),是否可以将其直接导入文件,而不是通过 ApolloConsumer 访问它?

import client from 'services/apollo'

export const getSomeData = async () => {
  const { data } = await client.query({ ... })

  console.log(data)
}

是的,应该没问题。

此博客 post 提到为 Apollo 使用单例:

I use a singleton with a unique apollo client to keep a unique cache and use in all code.

https://cheesecakelabs.com/blog/apollo-graphql-client-makes-api-integration-breeze/