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-module 自动重新获取有关查询参数更新的查询