如何解决如何强制Apollo Client将缓存的数据用于详细信息视图页面
我有一个基于分页游标的查询 TODOS 和带有查询 TODO 的详细信息页面,以按ID获取数据。 每当我进入详细信息视图并将 useQuery 与 TODO 查询一起使用时(与 TODOS 查询结果包含的数据完全相同,它仍会尝试获取数据从服务器而不是从缓存中获取。如何实现不从服务器获取数据(因为它已经存在),我认为Apollo按ID进行检测并从缓存中返回,但是没有。有什么建议吗?
类似的问题,例如没有post,但我认为这不是正确的方法,应该有更好的解决方案。 (我希望)
这是 TODOS 查询:
query TODOS(
$paginationOptions: PaginationOptionsInput
) {
todos(paginationOptions: $paginationOptions) {
pagination {
minCursor
maxCursor
sortOrder
limit
hasMoreResults
}
result {
id
...SomeTodoFields
}
}
在详细信息页面上,我还有第二个查询 TODO
query (
$todoId: String!
) {
todo(todoId: $todoId) {
id
...SomeTodoFields
}
}
解决方法
由于我使用的是Apollo-client here。仔细阅读每个笔记,这真的很重要!我的代码示例:
cache: new InMemoryCache({
fragmentMatcher,cacheRedirects: {
Query: {
todo: (_,args,{ getCacheKey }) => {
return getCacheKey({ __typename: 'TodoType',id: args.todoId })
}
}
}
})
})
还找到了一些很好的相关article,您可能要检查一下。 这对我有用,希望对其他人也有帮助。 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。