在 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 中删除突变后如何重定向?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Apollo 和 React 捕获身份验证失败后如何正确重定向

何时以及如何使用 Apollo 客户端和 React 路由器进行重定向

Next.js 在 GraphQL 突变内重定向

如何使用 Nuxt ServerMiddleware 和 Apollo GraphQL 处理 301 重定向

如果令牌过期,如何在 apollo 客户端中重定向或导航

UseQuery 在通过 apollo react 使用 useMutations 重定向后不起作用