我的项目需要使用两个不同的 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 包装器。
答案 0 :(得分:0)
如果您已经有权访问客户端,则可以使用 .query
(或 .mutate
)方法,如 here 所述。
如果您想拥有与 useQuery
和 useMutation
相同的 api(这在使用高级选项时可能不可行),您必须构建自己的钩子。使用 useState
,您可以存储 called
、loading
、error
和 data
状态,并在请求承诺解决/拒绝时更新各自的状态。