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,
})
我正在尝试从 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,
})