Вы должны импортировать ApolloProvider
из того же пакета, что и компонент или хук, который его использует. Это потому, что контекст, предоставляемый ApolloProvider
, должен совпадать с контекстом, используемым компонентом или ловушкой. если вы используете разные пакеты, объект контекста будет другим.
Пакет react-apollo
экспортирует все три: ApolloProvider
, Query
и useQuery
. Если вы используете этот пакет, вы можете использовать ApolloProvider
с Query
и useQuery
. Однако @apollo/client
экспортирует только ApolloProvider
и useQuery
. Это потому, что graphql
HOC и компоненты рендеринга пропа устарели. Если вы настаиваете на использовании Query
и useQuery
, вам необходимо импортировать Query
из другого пакета, например @apollo/react-components
, и добавить также ApolloProvider
:
import {
ApolloProvider as ApolloProvider2,
Query,
} from '@apollo/react-components'
import {
ApolloProvider,
ApolloClient,
HttpLink,
InMemoryCache,
useQuery,
gql,
} from '@apollo/client'
<ApolloProvider2 client={client}>
<ApolloProvider client={client}>
<App/>
</ApolloProvider>
</ApolloProvider2>
Обратите внимание, что выможно импортировать gql
напрямую из apollo@client
.