在 Apollo 中删除突变后如何重定向?

Posted

技术标签:

【中文标题】在 Apollo 中删除突变后如何重定向?【英文标题】:How to redirect after a deleting mutation in Apollo? 【发布时间】:2018-03-17 12:59:19 【问题描述】:

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

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】:

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

尝试类似:

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

【讨论】:

以上是关于在 Apollo 中删除突变后如何重定向?的主要内容,如果未能解决你的问题,请参考以下文章