为什么 GraphQL 将数组中的第一项显示为所有项?
Why GraphQL shows first item from array as all items?
我正在尝试从 GraphQL 获取项目并接收(查看 'Network' 选项卡):
但是当我这样做的时候
console.log(data)
我多次收到与第一次相同的对象。
例如,不是 [0,1,2,3,4,5,6],而是 [0,0,0,0,0,0]。
怎么了?
您的 API 返回 null
作为每个项目 id
属性 的值。 Apollo 的 InMemoryCache
被归一化并使用每个对象的 id
和 __typename
作为键存储。由于每个项目的 ID 相同,它们在缓存中被覆盖。
最简单的解决方案是修复您的服务器,使其正确 returns 每个项目的 id
-- 这将修复意外的缓存行为。如果由于某种原因您没有每个项目的唯一标识符,您将需要实现自己的 dataIdFromObject
函数并将其传递给 InMemoryCache
的配置。有关文档中的更多详细信息,请参阅 here。
我正在尝试从 GraphQL 获取项目并接收(查看 'Network' 选项卡):
但是当我这样做的时候
console.log(data)
我多次收到与第一次相同的对象。 例如,不是 [0,1,2,3,4,5,6],而是 [0,0,0,0,0,0]。 怎么了?
您的 API 返回 null
作为每个项目 id
属性 的值。 Apollo 的 InMemoryCache
被归一化并使用每个对象的 id
和 __typename
作为键存储。由于每个项目的 ID 相同,它们在缓存中被覆盖。
最简单的解决方案是修复您的服务器,使其正确 returns 每个项目的 id
-- 这将修复意外的缓存行为。如果由于某种原因您没有每个项目的唯一标识符,您将需要实现自己的 dataIdFromObject
函数并将其传递给 InMemoryCache
的配置。有关文档中的更多详细信息,请参阅 here。