#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
});
Есть ли в любом случае возможность использовать два разных экземпляра в моем проекте React js с клиентом Apollo? В некоторых случаях в одном компоненте мне придется вызывать два API GraphQL. Поэтому я не могу использовать оболочку ApolloProvider, которая ожидает один экземпляр клиента.
Ответ №1:
Если у вас уже есть доступ к клиенту, вы можете использовать .query
(или .mutate
) метод, описанный здесь.
Вам придется создавать свои собственные крючки, если вы хотите иметь тот же api, useQuery
что и и useMutation
(что, вероятно, невозможно при использовании дополнительных опций). С useState
помощью вы можете хранить состояния called
, loading
, error
amp; data
и, когда обещание запроса будет разрешено/отклонено, обновлять соответствующие состояния.