ApolloProvider useQuery 组合不从 AWS AppSync 获取数据,在 React 项目中

Posted

技术标签:

【中文标题】ApolloProvider useQuery 组合不从 AWS AppSync 获取数据,在 React 项目中【英文标题】:ApolloProvider useQuery combination does not fetch data from AWS AppSync, in React project 【发布时间】:2021-06-08 06:03:34 【问题描述】:

情况

由于兼容问题,我正在使用 ApolloClient 来构建我的 AWS AppSync API 客户端,以便我可以使用 ApolloProvider 将客户端传递给不同的子组件。

在子组件中,我调用 useQuery 来获取数据,但问题是输出总是给我默认的“未定义”值。

***代码

import awsconfig from '../aws-exports';
import  AUTH_TYPE  from 'aws-appsync';
import 
  ApolloProvider,
  ApolloClient,
  ApolloLink,
  HttpLink,
  InMemoryCache,
 from "@apollo/client";
import  createAuthLink  from "aws-appsync-auth-link";
import  getUserDb, listUserDbs  from '../graphql/queries';

const link = ApolloLink.from([
  createAuthLink(
    url: awsconfig.aws_appsync_graphqlEndpoint,
    region: awsconfig.aws_appsync_region,
    auth: 
      type: AUTH_TYPE.API_KEY,
      apiKey: awsconfig.aws_appsync_apiKey,
    ,
  ),
  new HttpLink( uri: awsconfig.aws_appsync_graphqlEndpoint ),
]);

const client = new ApolloClient(
  link,
  cache: new InMemoryCache(),
  credentials: 'include'
);

function WithProvider ()
  return (
    <ApolloProvider client=client>
      <App />
    </ApolloProvider>
  )


export default WithProvider;

子组件中的代码(useQuery的使用)

import  listUserDbs  from '../graphql/queries';
const GET_USER_PROFILE = gql(listUserDbs)

function App() 
  const  loading, error, out_data, client  = useQuery(GET_USER_PROFILE);
  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error :(</p>;

我做了什么测试?

    当我直接从客户端调用查询时,它起作用了
client
  .query(
    query: gql`
      query ListUserDbs(
        $filter: Table
      ) 
        listUserDBS(filter: $filter) 
          items 
            sub
          
          nextToken
        
      
    `
  )
  .then(result => console.log(result));
    当我要求 useQuery 返回客户端时,它返回的客户端与我设置的相同
const  loading, error, out_data, client  = useQuery(LIST_USER_PROFILE);

我对这个问题的猜测

问题可能来自 useQuery 但我不知道如何解决。

【问题讨论】:

【参考方案1】:

也许您需要data 而不是out_data

【讨论】:

以上是关于ApolloProvider useQuery 组合不从 AWS AppSync 获取数据,在 React 项目中的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL 和 ApolloProvider 和存储......它非常嵌套

初始化 ApolloProvider 后更新标头

ReactJs - 如何将 ApolloProvider 包装在 StatsigProvider 中?

React + ApolloProvider + Typescript = "JSX 元素类不支持属性" 错误

apollo-client, onError, ApolloProvider, client.writeData(localstate)... 当服务器返回 401 时如何处理对用户的身份验证

React Uncaught Invariant Violation:在 ApolloConsumer 的上下文中找不到“客户端”。将根组件包装在 <ApolloProvider> 中