Apollo:延迟重新获取查询

Posted

技术标签:

【中文标题】Apollo:延迟重新获取查询【英文标题】:Apollo: Refetch Queries with Delay 【发布时间】:2019-12-13 10:24:41 【问题描述】:

我可以延迟使用 refetchQueries 吗?我可以设置延迟还是可以在函数中调用 refetchQueries? 谢谢!

【问题讨论】:

您在寻找类似***.com/questions/50965347/… 的东西吗? @HarshMakadia 的答案似乎是关于请求失败的查询,有时如果后端存在已知延迟,我们可能希望延迟重新获取 @DamianGreen 是的,你是对的 【参考方案1】:

我无法找到一种优雅的方式来延迟refetchQueries。相反,我只是直接修改缓存,如文档本节后面所述。 https://www.apollographql.com/docs/react/caching/advanced-topics/#updating-after-a-mutation

这是我的解决方案中的一个 sn-p。我循环遍历sortPermutations 的原因是查询可能缓存了不同组variables 的数据。这个解决方案循环遍历所有这些。

const [createUser] = useMutation<AddUser, AddUserVariables>(ADD_USER, 
  update: (cache,  data ) => 
    if (!data?.addUser) return

    const cachedUsers = cache.readQuery<GetUsers>(
      query: GET_USERS,
      variables: sortedColumn,
    )

    sortPermutations.forEach(( sortBy, sortOrder ) => 
      const users = [data.addUser, ...(cachedUsers?.users ?? [])].sort(
        sortUsers(sortBy, sortOrder),
      )

      cache.writeQuery<GetUsers, GetUsersVariables>(
        data:  users ,
        query: GET_USERS,
        variables:  sortBy, sortOrder ,
      )
    )
  ,
)

【讨论】:

以上是关于Apollo:延迟重新获取查询的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Apollo 客户端重新获取特定查询?

如何让 apollo-module 自动重新获取有关查询参数更新的查询

使用 Apollo 重新获取部分 GraphQL 查询的最佳实践?

在 apollo 客户端中重新获取查询

Vue-apollo 从另一个组件重新获取查询

使用 Apollo-Client 重新获取查询会引发错误