为什么 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