gpt4 book ai didi

graphql - 如何在 ApolloClient.query() 上使用 'cache-and-network' 策略

转载 作者:行者123 更新时间:2023-12-04 14:19:14 24 4
gpt4 key购买 nike

我正在使用 ApolloClient 构建一个应用来查询 GraphQL 端点。我希望对普通查询使用“缓存和网络”获取策略,因为此特定策略仅适用于 watchQueries。我真正想要的是以下内容:

  1. 如果我们可以查询服务器,我们就会得到服务器的响应。

  2. 如果我们不能查询服务器,我们从缓存中加载内容,如果有缓存的话

这是我用来实例化 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 方法发出查询。

我不知道该怎么做,所以欢迎任何帮助!

最佳答案

我最终忽略了构造函数中的 defaultOptions 对象。我根据网络状态在查询本身中定义 fetchPolicy。

function getZones() {
return ApolloService.client.query({
query: GET_ZONES_CLIENT,
fetchPolicy: navigator.onLine ? 'network-only' : 'cache-only'
})
}

关于graphql - 如何在 ApolloClient.query() 上使用 'cache-and-network' 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56822614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com