尝试获取查询片段时出现以下错误:
“您正在使用简单的(启发式)片段匹配器,但是您的查询包含联合或接口类型。ApolloClient将无法准确映射片段。要使此错误消失,请使用
IntrospectionFragmentMatcher
作为在文档中进行了描述:https://www.apollographql.com/docs/react/recipes/fragment-matching.html“
这是触发错误的调用。
const sourceData = cache.readFragment({
id: `${typename}:${idToAdd}`,
fragment: gql`
${sourceFragment}
`,
});
sourceFragment在哪里
fragment series on PriceSeries {
id
title
description
commodity
region
location
isDiscontinued
order
}
Apollo似乎将片段的返回值归类为并集或接口。我认为没有必要添加IntrospectionFragmentMatcher,因为我们不需要联合或接口,尽管也许我错了。将__typename
添加到片段没有帮助。
IntrospectionFragmentMatcher
。(文档说应该只需要when using fragments on interfaces or unions
,而我们不需要)更新
ApolloClient的创建如下
client = new ApolloClient({
link: createLink('MY_URL', Apollo.fetch),
cache: new InMemoryCache(),
});
答案 0 :(得分:0)
您需要创建阿波罗缓存并使用dataIdFromObject
设置规范化功能。
import { InMemoryCache, IntrospectionFragmentMatcher } from 'apollo-cache-inmemory';
const fragmentMatcher = new IntrospectionFragmentMatcher({
// Here you may want to pass your introspection query result data,
});
const cache = new InMemoryCache({
dataIdFromObject: o => o.id,
fragmentMatcher,
});