如何在阿波罗删除突变后重定向?

时间:2017-10-05 19:38:09

标签: graphql apollo vue-apollo

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

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

1 个答案:

答案 0 :(得分:1)

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

尝试类似:

this.$apollo.mutate(...)
  .then(({ data: { deletePost } }) => {
    this.$router.push({ name: 'IndexPosts' })
  })