Reactjs 无法在GraphQL Apollo客户端中读取正确的查询
在我应用程序中的一个页面上,我正在使用graphql apollo客户端进行两个api调用。一个是Reactjs 无法在GraphQL Apollo客户端中读取正确的查询,reactjs,graphql,react-apollo,react-apollo-hooks,Reactjs,Graphql,React Apollo,React Apollo Hooks,在我应用程序中的一个页面上,我正在使用graphql apollo客户端进行两个api调用。一个是文档,另一个是菜单。我的一个组件中需要菜单数据,因此我想使用readQuery,以免再次获取它。我正在做的是: const client = useApolloClient(); try { const testData = client.readQuery({ query: gql` query ($result: String) { menu(result: $resul
文档
,另一个是菜单
。我的一个组件中需要菜单数据,因此我想使用readQuery
,以免再次获取它。我正在做的是:
const client = useApolloClient();
try {
const testData = client.readQuery({
query: gql`
query ($result: String) {
menu(result: $result) {
text
}
}
`,
variables: {
result: „testresult”
},
});
console.log(testData);
} catch(e) {
console.log(e);
}
graphQL正在查找文档
根查询,因此错误如下所示:
Invariant Violation: Can't find field menu({"lang":"en-us"}) on object
{
"document({\"lanf\":\"en-us\",\"id\":\"mySite\"})": {
"type": "id",
"generated": false,
"id": "XO5tyxAAALGzcYGG",
"typename": "Document"
}
}.
我认为这是因为菜单数据还不存在。
我怎么能等到它出现呢?你说得对。由于数据尚未在缓存中,因此出现错误: 另一方面,如果适当的数据不在缓存中,查询方法可能会向服务器发送请求,而如果数据不在缓存中,readQuery将抛出错误。readQuery将始终从缓存中读取 要执行所需操作,请使用仅带
缓存的普通查询
fetchPolicy
。
但这不也会带来错误吗?来自文档:如果您查询的数据不存在于缓存中,那么将抛出一个错误,因此我想
首先缓存
在这里更合适。谢谢你的帮助,让我们走上正轨。不,它不会出错。使用useQuery时,如果没有数据,则仅此而已。您必须在ui中处理无数据的情况。fetchPolicy
cache first
是默认行为。阿波罗将查看缓存,如果没有数据,它将发出请求。否则就不行了。因此,要先使用缓存
,只需像平常一样使用useQuery即可。