我正在尝试从GraphQL中获取项目并接收(在“网络”标签中查看):
但是当我这样做
console.log(data)
我第一次获得相同的对象很多次。 例如,不是[0,1,2,3,4,5,6],而是[0,0,0,0,0,0]。 怎么了?
答案 0 :(得分:1)
您的API返回null
作为每个项目的id
属性的值。阿波罗的InMemoryCache
被规范化,并使用每个对象的id
和__typename
作为密钥存储。由于每个项目的ID都相同,因此它们会在缓存中被覆盖。
最简单的解决方案是修复服务器,以便为每个项目正确返回id
-这将修复意外的缓存行为。如果由于某种原因每个项目都没有唯一的标识符,则需要实现自己的dataIdFromObject
函数并将其传递给InMemoryCache
的配置。有关文档中的其他详细信息,请参见here。