删除帖子后,我想更新缓存并重定向到帖子索引页面。
deletePost() {
this.$apollo.mutate({
mutation: DELETE_POST,
variables: {
postId: this.postId
},
update: (cache, { data: { deletePost } }) => {
const query = {
query: GET_PAGINATED_POSTS,
variables: {
page: 0,
pageSize: 10
},
};
const data = cache.readQuery({ ...query });
data.postsPage = data.postsPage.filter(post => post._id != this.postId)
cache.writeQuery({ ...query, data })
}
})
// redirect
this.$router.push({ name: 'IndexPosts' })
}
以上情况有效,但由于我没有做optimisticResponse
,因此在索引页面显示的时间和缓存更新发生的时间之间会有一点延迟。我怎么解决这个问题?我试图做optimisticResponse
,但我不知道如何获取分页帖子列表而不进行其他查询。
答案 0 :(得分:1)
this.$apollo.mutate(...)
会返回一个承诺。
尝试类似:
this.$apollo.mutate(...)
.then(({ data: { deletePost } }) => {
this.$router.push({ name: 'IndexPosts' })
})