Я сталкиваюсь с проблемой, при которой выполнение запроса с хуком Apollo useQuery
работает нормально, но если я использую хук useApolloClient
, чтобы получить экземпляр ApolloClient
, а затем вызвать клиентский метод query
вызов завершается с ошибкой Error: query option is required. You must specify your GraphQL document in the query option.
Мой код более или менее выглядит следующим образом:
import React from 'react'
import gql from 'graphql-tag'
import { useQuery, useApolloClient } from '@apollo/react-hooks'
const MyComponent = props => {
const QUERY = gql`
query MyPersonSearch ( $after: String, $filter: PersonFilter, $first: Int ) {
people: people ( after: $after, filter: $filter, first: $first ) {
totalCount
pageInfo {
endCursor
hasNextPage
}
edges {
node {
firstName
lastName
}
}
}
}
`
const queryVars = cursor => { after: cursor, ...otherQueryVars }
// This works
const { loading, error, data, fetchMore } = useQuery(
QUERY, { variables: queryVars( ... ) }
)
// This doesn't work
const client = useApolloClient()
const fetchPages = async () => {
const { data } = await client.query( QUERY, { variables: queryVars( ... ) } )
}
...
}
Есть идеи, что здесь происходит? Сообщение об ошибке немного расплывчато, но я предполагаю, что это означает, что client.query()
ожидает DocumentNode
в качестве первого параметра, а тип возвращаемого значения gql
равен any
... но опять же, если это были бы верны, я ожидал бы, что useQuery
также потерпит неудачу, так как он также ожидает, что запрос будет DocumentNode
.