Apollo:延迟重新获取查询

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

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

最佳答案

我找不到一种优雅的方式来延迟 refetchQueries .相反,我只是直接修改缓存,如文档本节后面提到的那样。 https://www.apollographql.com/docs/react/caching/advanced-topics/#updating-after-a-mutation
这是我的解决方案中的一个片段。我循环的原因 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:延迟重新获取查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366328/

相关文章:

reactjs - 如何将localStorage与apollo-client和reactjs一起使用?

react-native - 带有 redux-persist 的 Apollo

typescript - 使用 GraphQL 代码生成器从解析器返回不完整的形状

reactjs - 使用 React-Apollo 设置 React-Storybooks

graphql - useQuery 错误对象为 graphQLErrors 属性返回空数组

typescript - 在将查询发送到 GraphQL 之前对其进行操作

reactjs - 如何将多个查询传递给 apollo/graphql 中的 refetchQueries

react-native - 如何从突变查询更新 Apollo 数据存储/缓存,更新选项似乎没有触发

graphql - 当输入对象中的变量设置为未定义或空字符串时,useQuery 不会触发

reactjs - Apollo GraphQL 查询返回后如何更新 Redux 存储