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

我有一个返回一个项目数组的GraphQL查询。 我可以在GraphiQL中运行查询并获得我期望的结果。

我有一个反应的应用程序,使用react-apollo@graphql装饰器来解决相同的查询组件道具。 当通过react-apollo运行查询时,返回数组中的每个项目都是相同的 – 每个项目都被最后一个项目“覆盖”。

我可以在开发工具networking选项卡中看到正确的数组项目是通过networking发送的,所以这个问题似乎与react-apollo有关。 什么可能导致反应apollo覆盖数组元素?

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

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

您可以在Apollo文档中阅读更多关于使用dataIdFromObject进行规范化的内容