具有不同客户端实例的 Apollo 客户端用于响应

时间:2021-07-25 08:10:56

标签: reactjs graphql apollo-client

我的项目需要使用两个不同的 graphQL 客户端来实现。

我试图将客户端实例添加为 useQuery 钩子中的一个选项。然而,这是行不通的,并导致无限渲染和网络调用。

const client1 = new ApolloClient({
        link: from([authLink, errorLink, httpLink]),
        cache: new InMemoryCache(),
   
      });

const {data, error} = useQuery(GET_COLLECTIONS, {
                                 client: client1
                                  variables: variables
                         });

无论如何我可以在带有 Apollo 客户端的 React js 项目中使用两个不同的实例吗?在某些情况下,在单个组件中,我将不得不调用两个 graphQL API。所以我不能使用期望单个客户端实例的 ApolloProvider 包装器。

1 个答案:

答案 0 :(得分:0)

如果您已经有权访问客户端,则可以使用 .query(或 .mutate)方法,如 here 所述。

如果您想拥有与 useQueryuseMutation 相同的 api(这在使用高级选项时可能不可行),您必须构建自己的钩子。使用 useState,您可以存储 calledloadingerrordata 状态,并在请求承诺解决/拒绝时更新各自的状态。