我正在使用https://github.com/awslabs/aws-mobile-appsync-sdk-js repo 第一页上示例中的基本客户端配置:
const client = new AWSAppSyncClient({
url: appSyncConfig.graphqlEndpoint,
region: appSyncConfig.region,
auth: {
type: appSyncConfig.authenticationType,
apiKey: appSyncConfig.apiKey,
}
});
但是没有<Rehydrated>
组件,并且有一个 Redux<Provider>
组件。最高级别的父组件是这样包装的:
<Provider store={store}>
<ApolloProvider client={client}>
<App/>
</ApolloProvider>
</Provider>
我试过交换 and 的顺序Provider
,ApolloProvider
但这并没有改变结果。
问题是查询成功运行一次,但不再运行。AppSync 的 CloudWatch 日志显示初始成功查询,但未显示进一步的查询尝试。这使我相信问题出在客户端上。
我已将fetchPolicy
查询设置为'network-only'
没有结果:
const mapDataToProps = graphql(GET_ALL_STORIES, {
name: 'getAllStories',
options: { fetchPolicy: 'network-only' }
});
通过在 Chrome 调试器中检查组件,我已经确认命名查询“ getAllStories
”确实存在于组件上。查询道具NetworkStatus
和loading
属性始终保持不变,1
并且true
从未收到任何响应。
我目前正在使用以下版本的相关库: aws-appsync: 1.0.17 Apollo-client: 2.2.8 react-Apollo: 2.1.3 redux: 3.6.0
编辑 附加信息。这发生在使用 Expo 创建的 react-native 程序中。通过摇动设备并选择“重新加载”重新加载程序会导致上述行为。但是,重新启动 Expo 并再次运行程序会导致根据需要重新获取查询。