微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apollo readQuery,从缓存中获取数据

如何解决Apollo readQuery,从缓存中获取数据

我正在尝试从 Apollo 缓存中获取数据。我知道数据在那里是因为在 Apollo 开发工具中指定的记录可用。 在我的反应应用程序中,我进行了简单的单击并设置了稍后传递给查询的 Id。 client.readQuery(...) 的结果是 null。我在旋转,因为不知道为什么。我使用的代码与文档中的完全相同。

这是一个查询

export const RECRUIT_QUERY = gql`
  query Recruit($id: ID!) {
    Recruit(_id: $id) {
      _id
      firstName
    }
  }
`;

组件中 apollo 钩子的使用:

const client = useApolloClient();
const recruit = client.readQuery({
  query: RECRUIT_QUERY,variables: { id: selectedId }
})

apollo 的配置:

export const client = new ApolloClient({
  link: concat(
    authMiddleware,new HttpLink({
      uri: process.env.REACT_APP_API_URL,}),),cache: new InMemoryCache(),});

这是阿波罗商店预览:

enter image description here

解决方法

使用 readFragment 满足了我的期望。以前我尝试过这个解决方案但错误地,例如:

 client.readFragment({
   id: '4587d3c2-b3e7-4ade-8736-709dc69ad31b',fragment: RECRUIT_FRAGMENT,});

事实上,Appollo 商店找不到这条记录。正确的解决方案如下所示:

client.readFragment({
  id: 'Recruit:4587d3c2-b3e7-4ade-8736-709dc69ad31b',})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。