запрос работает с хуком useQuery, но не с экземпляром ApolloClient - PullRequest
0 голосов
/ 04 марта 2020

Я сталкиваюсь с проблемой, при которой выполнение запроса с хуком 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.

1 Ответ

0 голосов
/ 04 марта 2020

Welp, получается синтаксис не тот же. client.query() ожидает единственный параметр QueryOptions, тогда как useQuery может принять запрос в качестве первого параметра и необязательный QueryOptions второй параметр.

...