我正在尝试为类似功能实现 Optimistic UI,但我无法处理它,因为我必须重新获取专用查询以更新文章。让我通过代码示例更好地解释一下:这是我的文章文档。
我想改变liked
属性,我有一个突变来做到这一点:
mutation LikeArticle($status: Boolean!, $articleId: String!) {
likeArticle(status: $status, articleId: $articleId)
}
获取文章文档我有这个查询:
query GetArticle($id: String!) {
getArticle(id: $id) {
id
createdAt
liked
likes
author {
id
username
}
topics {
id
name
}
}
}
在我的 UI 中,我只是根据getQuery提供的数据呈现文章文档。另外,我有Like按钮,当用户按下它时,likeArticle突变会执行,我必须重新获取getArticle查询以更新 UI。这就是问题所在,我只想添加乐观的 UI 以不等待长时间的服务器响应,但它根本不起作用。可能是因为重新获取 getArticle查询,但我不确定
const [
likeArticle,
{
data: likeArticleData,
loading: likeArticleLoading,
error: likeArticleError,
},
] = useMutation(LIKE_ARTICLE, {
refetchQueries: [
{
query: GET_ARTICLE_QUERY,
variables: { id: article.id },
},
],
optimisticResponse: {
getArticle: {
id: article.id,
__typename: "Article",
liked: !article.liked,
},
},
});
执行likeArticle突变的例子
likeArticle({
variables: {
status: !article.liked,
articleId: article.id,
},
});
我将不胜感激任何帮助/信息