2

删除帖子后,我想更新缓存并重定向到帖子索引页面。

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但我不知道如何在不进行其他查询的情况下获取分页帖子列表。

4

1 回答 1

1

this.$apollo.mutate(...)返回一个承诺。

尝试类似:

this.$apollo.mutate(...)
  .then(({ data: { deletePost } }) => {
    this.$router.push({ name: 'IndexPosts' })
  })
于 2018-04-27T07:44:26.120 回答