reactjs - AWS AppSync + React-Apollo Query/useQuery 引发异常 this.currentObservable.query.getCurrentResult 不是函数
问题描述
我是 GraphQL/Apollo 的新手,我很难用 React 应用程序设置它。
我有一个 React 组件,它从使用 Amplify/AppSync 构建的 GraphQL API 加载列表。
如果我手动调用以获取项目,即:
const videosData = await client.query({
query: gql(queries.listVideos)
});
const videosItems = videosData.data.listVideos.items;
setVideosData(videosItems);
奇迹般有效。但是,如果我尝试使用 Apollo Query 组件或 useQuery 挂钩,则会引发以下错误:
TypeError:this.currentObservable.query.getCurrentResult 不是函数
如果我只是添加行以使用钩子获取查询,它已经给了我这个错误
钩子调用:
const {loading, error, data, refetch} = useQuery(gql(queries.listVideos));
引发问题的被调用函数:
QueryData.getQueryResult
node_modules/@apollo/react-hooks/lib/react-hooks.esm.js:325
322 | called: true
323 | });
324 | } else {
> 325 | var currentResult = this.currentObservable.query.getCurrentResult();
| ^ 326 | var loading = currentResult.loading,
327 | partial = currentResult.partial,
328 | networkStatus = currentResult.networkStatus,
<Query>
如果我使用该组件,则会发生完全相同的问题
软件包版本:
"aws-amplify": "^1.1.30", "aws-amplify-react": "^2.3.10", "aws-appsync": "^1.8.1", "graphql-tag": "^2.10.1", "react-apollo": "^3.0.1",
知道我可能做错了什么以及如何解决吗?
解决方案
如果添加:
"resolutions": {
"apollo-client": "2.6.3"
}
在您的package.json
并重新安装它应该可以工作。
您可能会看到以下警告:
Resolution field "apollo-client@2.6.3" is incompatible with requested version "apollo-client@2.4.6"
这是因为 Appsync 依赖于旧版本的 react-apollo,但我发现它运行良好。
您可以关注这个问题,希望很快就会得到解决,我们不再需要这样做了。
推荐阅读
- google-sheets - 交替循环 (T)op/(B) 底部序列
- javascript - 在不同的模式上显示重力形式输入
- python - 用于管理正则表达式替换索引映射的 Python 片段?
- apache-spark - Cassandra 计数查询抛出 ReadFailureException
- mysql - Need to iterate through array to capture all rows - currently only saving the number in the [0] or first record
- excel - 如何与python共享excel工作簿?
- jsp - Sitemesh3 装饰器仅适用于 JSP 扩展
- amazon-web-services - 如何在 s3 中进行自定义设置以向某些用户显示文件夹
- c++ - 如何在c中运行命令行
- c# - 用 LINQ to XML 替换 XML 元素