Клиент Apollo с различными экземплярами клиентов для react

#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 и, когда обещание запроса будет разрешено/отклонено, обновлять соответствующие состояния.