apollo - Apollo GraphQL:预取数据,但查询命中服务器而不是从缓存加载?
问题描述
我有这个在元素悬停时调用的例程:
function prefetchDataOnHover(event){
const messsageID = event.currentTarget.id;
if ((Meteor.userId()) && (!prefetched_IMs)){
client.query({
query: INSTANTMESSAGES_QUERY,
variables: {"fromID": Meteor.userId(), "toID": messsageID}
});
setPrefetched_IMs(true);
}
}
它预取了我的即时消息组件使用的数据。在那个组件中,我有一个<Query>
组件:
<Query query={INSTANTMESSAGES_QUERY}
variables={{"fromID": Meteor.userId(), "toID": remoteUserID}}> //<==confirmed same values as in pre-fetch
{({subscribeToMore, loading, error, data, refetch}) => {
if (loading) {
[.....]
我已经确认发送到 INSTANTMESSAGES_QUERY 的变量在两个地方都是相同的。我希望该组件会从缓存中检索数据。但相反,我的服务器解析器运行并检索数据。
我错过了什么?
解决方案
看起来只是因为我refetch
在预加载的组件中使用。
推荐阅读
- strapi - 内容管理器上的新帖子未触发 Strapi 服务“创建”
- https - 使用 https://localhost url 时 lighthouse-ci 一直失败
- node.js - 使用 React、NodeJS 和 Postgres:无法在没有 404 的情况下删除
- flutter - 如何对新通知进行排序和分组 - Flutter
- docker - 是否有用于 tensorflow-serving 的 model.config 文件以返回主机上的所有模型
- c++ - 使用 C++ 从磁卡读卡器 MT188 读取数据
- javascript - 为什么没有在反应中设置下拉菜单的初始值?
- javascript - 如何使用 setTimeout() 在 React 中使用 hooks 来加载状态?
- database - Flutter:尝试使用 OnTap 突出显示 ListTile
- botframework - 聊天机器人在模拟器和 Azure 门户中工作,但在网络聊天中无法正常启动