GraphQL:react-apollo 客户端覆盖数组元素

GraphQL: react-apollo client overwrites array elements

我有一个 GraphQL 查询 returns 一个项目数组。我可以 运行 GraphiQL 中的查询并得到我预期的结果。

我有一个反应应用程序,它使用 react-apollo@graphql 装饰器来解析对组件道具的相同查询。当 运行 通过 react-apollo 查询时,返回数组中的每一项都是相同的 - 每一项都已 'overwritten' 最后一项。

我可以在开发工具网络选项卡中看到通过网络发送了正确的数组项,因此问题似乎与 react-apollo 有关。什么可能导致 react-apollo 覆盖数组元素?

问题是我的 qgl 查询片段不包含数组中项目的 id 属性。

如果您有类似的问题,请确保您的架构在每个项目上都包含 id_id 属性;每个 id 值都是唯一的,并且您在查询中请求 id 属性。或者,您可以在客户端中提供 dataIdFromObject 函数来动态生成值的 ID。

您可以在 Normalization with dataIdFromObject

的 Apollo 文档中阅读更多内容