Apollo Client - 从缓存中读取
Apollo Client - reading from cache
React + Apollo 客户端应用程序。我正在尝试使用 readQuery
从我的缓存中读取,但无法读取缓存字段。
这是一个概要:
组件 SinglePost
调用 useQuery
执行我的 GET_POST
查询并缓存结果。 GET_POST
查询 return 类型 Post!
。一切都很好,开发工具显示 ROOT_QUERY
包含一个名为 getPost 的字段 post.
const { loading, data } = useQuery(GET_POST, {
variables: {
postID,
}
});
SinglePost
有一个子组件 DeleteButton
,可在点击时删除评论。它调用 useMutation
并删除评论。 DELETE_COMMENT
查询 returns 类型 Comment!
.
const [deleteComment] = useMutation(DELETE_COMMENT, {
variables: {
postID,
commentID,
},
});
Post 有一个评论数组,现在我需要在缓存中更新它的数组并删除删除的评论。我在 deleteComment
突变中使用 update
函数来获取缓存对象并使用 readQuery
从中获取 getPost 字段,但它 returns null,即使它在开发工具中。
update(cache, result) {
const cacheData = cache.readQuery({
query: GET_POST,
});
// code that doesn't run because cacheData is null
}
我怀疑当通过 return 一个 Post
类型的突变来改变 posts 时,它成功地读取了 getPost字段,但是当突变查询 return 一个 Comment
类型时,它无法在其突变挂钩中读取 getPost...因为没有参考到 Post
类型?
目前我使用 refetchQueries
作为解决方法。我不喜欢对服务器进行额外的调用,但我灵敏的大脑就是想不通。感谢任何帮助。
糟糕,没有变量被传递给查询。
update(cache, result) {
const cacheData = cache.readQuery({
query: GET_POST,
variables: {
postID
}
});
}
React + Apollo 客户端应用程序。我正在尝试使用 readQuery
从我的缓存中读取,但无法读取缓存字段。
这是一个概要:
组件 SinglePost
调用 useQuery
执行我的 GET_POST
查询并缓存结果。 GET_POST
查询 return 类型 Post!
。一切都很好,开发工具显示 ROOT_QUERY
包含一个名为 getPost 的字段 post.
const { loading, data } = useQuery(GET_POST, {
variables: {
postID,
}
});
SinglePost
有一个子组件 DeleteButton
,可在点击时删除评论。它调用 useMutation
并删除评论。 DELETE_COMMENT
查询 returns 类型 Comment!
.
const [deleteComment] = useMutation(DELETE_COMMENT, {
variables: {
postID,
commentID,
},
});
Post 有一个评论数组,现在我需要在缓存中更新它的数组并删除删除的评论。我在 deleteComment
突变中使用 update
函数来获取缓存对象并使用 readQuery
从中获取 getPost 字段,但它 returns null,即使它在开发工具中。
update(cache, result) {
const cacheData = cache.readQuery({
query: GET_POST,
});
// code that doesn't run because cacheData is null
}
我怀疑当通过 return 一个 Post
类型的突变来改变 posts 时,它成功地读取了 getPost字段,但是当突变查询 return 一个 Comment
类型时,它无法在其突变挂钩中读取 getPost...因为没有参考到 Post
类型?
目前我使用 refetchQueries
作为解决方法。我不喜欢对服务器进行额外的调用,但我灵敏的大脑就是想不通。感谢任何帮助。
糟糕,没有变量被传递给查询。
update(cache, result) {
const cacheData = cache.readQuery({
query: GET_POST,
variables: {
postID
}
});
}