我正在使用ApolloClient构建一个应用程序以查询GraphQL端点。我希望对普通查询使用“缓存和网络”获取策略,因为该特定策略仅适用于watchQueries。我真正想要的是以下内容:
如果我们可以查询服务器,则会收到服务器的响应。
如果我们无法查询服务器,则会从缓存中加载内容(如果已缓存)
这是我用来实例化ApolloClient的代码。
const defaultOptions = {
watchQuery: {
fetchPolicy: 'cache-and-network',
errorPolicy: 'ignore',
},
query: {
fetchPolicy: 'network-only',
errorPolicy: 'all',
},
mutate: {
errorPolicy: 'all'
}
}
const client = new ApolloClient({
cache: cache,
link: createUploadLink({
uri: 'http://localhost:3000/graphql',
}),
defaultOptions
});
所以我认为我有两个选择:捕获第一个查询响应,如果失败则从缓存加载内容,或者使用watchQuery方法发出查询。
我不知道该怎么做,所以任何帮助都将受到欢迎!
答案 0 :(得分:0)
我最终忽略了构造函数中的defaultOptions对象。我根据网络状态在查询本身中定义了fetchPolicy。
function getZones() {
return ApolloService.client.query({
query: GET_ZONES_CLIENT,
fetchPolicy: navigator.onLine ? 'network-only' : 'cache-only'
})
}