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

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

【问题讨论】:

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

标签: apollo react-apollo apollo-client graphql-js


【解决方案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 },
      })
    })
  },
})

【讨论】:

    猜你喜欢
    • 2020-10-19
    • 2021-01-27
    • 2023-03-29
    • 2019-12-20
    • 2021-11-26
    • 2021-04-29
    • 2019-11-30
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多