阿波罗:延迟重新获得查询

时间:2019-08-05 21:31:26

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

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

1 个答案:

答案 0 :(得分:0)

我无法找到一种优雅的方法来延迟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 },
      })
    })
  },
})