Apollo readQuery,从缓存中获取数据

Apollo readQuery, get data from cache

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

这是一个问题:

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

apollo hooks 在组件中的使用:

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(),
});

这是 apollo 商店预览:

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

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

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

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