Graphql Apollo客户端类型错误:对象不是函数

Graphql Apollo客户端类型错误:对象不是函数,graphql,react-apollo,apollo-client,apollo-boost,Graphql,React Apollo,Apollo Client,Apollo Boost,目前,我在查询我的Nexus GraphQL后端时遇到了一个问题。在我的前端,我使用Apollo boost(Apollo客户端)运行查询。在一个简单的示例中,我尝试从后端获取数据,但它不起作用,我找不到问题。我做错什么了吗?这是我的密码: TypeError:对象(…)不是函数 353 | 354 | function useBaseQuery(query, options, lazy) { 355 | if (lazy === void 0) { lazy = false

目前,我在查询我的Nexus GraphQL后端时遇到了一个问题。在我的前端,我使用Apollo boost(Apollo客户端)运行查询。在一个简单的示例中,我尝试从后端获取数据,但它不起作用,我找不到问题。我做错什么了吗?这是我的密码:

TypeError:对象(…)不是函数

 353 | 
  354 | function useBaseQuery(query, options, lazy) {
  355 |     if (lazy === void 0) { lazy = false; }
> 356 |     var context = useContext(getApolloContext());
  357 |     var _a = useReducer(function (x) { return x + 1; }, 0), tick = _a[0], forceUpdate = _a[1];
  358 |     var updatedOptions = options ? __assign(__assign({}, options), { query: query }) : { query: query };
  359 |     var queryDataRef = useRef();



 400 | }
  401 | 
  402 | function useQuery(query, options) {
> 403 |     return useBaseQuery(query, options, false);
  404 | }
  405 | 
  406 | function useLazyQuery(query, options) {

import React from 'react';
import ReactDOM from 'react-dom';
import registerServiceWorker from './registerServiceWorker';
import { BrowserRouter } from 'react-router-dom';
import ApolloClient, { gql } from 'apollo-boost';
import { ApolloProvider, Query } from 'react-apollo';


const client = new ApolloClient({
   uri: 'http://localhost:4000/graphql',
});

const GET_ALL_GENRES = gql`
   {
      getAllGenres {
         genre_id
         title
      }
   }
`;

const ExchangeRates = () => (
   <Query query={GET_ALL_GENRES}>
      {({ loading, error, data }) => {
         if (loading) return <p>Loading...</p>;
         if (error) return <p>Error :(</p>;

         console.log(data);
         return <p>Succeed</p>;
      }}
   </Query>
);

ReactDOM.render(
   <ApolloProvider client={client}>
      <BrowserRouter>
         <ExchangeRates />
      </BrowserRouter>
   </ApolloProvider>,
   document.getElementById('root'),
);
registerServiceWorker();

您使用的是Apollo Client 3,因此查询组件是。您应该使用
useQuery
而不是

注意:不推荐使用React Apollo的渲染道具组件。它们将继续接受bug修复,直到2020年3月,此后阿波罗将不再对其进行维护

您可以尝试以下方法:

从'@apollo/client'导入{gql,useQuery};
...
const GET_ALL_GENRES=gql`
质疑{
GetAllTyres{
类型识别码
标题
}
}
`;
常数交换率=()=>(
const{data,loading,error}=useQuery(获取所有类型)
如果(加载)返回加载…

; if(error)返回错误:(

; 控制台日志(数据); 返回成功

; );
您使用的是Apollo Client 3,因此
查询组件是。您应该使用
useQuery
而不是

注意:React Apollo的渲染道具组件已被弃用。它们将继续接受错误修复,直到2020年3月,之后Apollo将不再维护它们

您可以尝试以下方法:

从'@apollo/client'导入{gql,useQuery};
...
const GET_ALL_GENRES=gql`
质疑{
GetAllTyres{
类型识别码
标题
}
}
`;
常数交换率=()=>(
const{data,loading,error}=useQuery(获取所有类型)
如果(加载)返回加载…

; if(error)返回错误:(

; 控制台日志(数据); 返回成功

; );
Hi Michael,我也尝试过这种方法,但仍然存在相同的错误。我阅读了整个文档,唯一有效的方法是使用client.query的第一个示例…然后是我上面提到的。但这不是我想用以构建应用程序的方式。我已解决了这个问题。我的react版本太旧了。Hi Michael,我也尝试过这个ap方法,但仍然是相同的错误。我阅读了整个文档,唯一有效的方法是使用client.query…的第一个示例,然后是我上面提到的。但这不是我希望使用的方法来构建应用程序。我已修复了此问题。我的react版本太旧。
client
   .query({
      query: gql`
         {
            getAllGenres {
               genre_id
               title
            }
         }
      `,
   })
   .then((result) => console.log(result));