gpt4 book ai didi

javascript - Apollo Client 将具有相同 id 和不同值的对象数组替换为第一个对象的副本数组

转载 作者:行者123 更新时间:2023-12-03 03:11:20 25 4
gpt4 key购买 nike

我们的 GraphQL 服务器使用数据响应查询,其中包含对象数组,每个对象共享相同的 id 和不同键的不同值。例如,我们可能有一个如下所示的数组:

[
{ id: 123, name: 'foo', type: 'bar', cost: 5 },
{ id: 123, name: 'foo', type: 'bar', cost: 6 },
{ id: 123, name: 'foo', type: 'bar', cost: 7 },
{ id: 123, name: 'foo', type: 'bar', cost: 8 }
]

我们可以在“网络”选项卡中看到服务器的响应中包含正确的数据。然而,当它经过 Apollo 客户端模块处理时,数组已经转换成如下所示的内容:

[
{ id: 123, name: 'foo', type: 'bar', cost: 5 },
{ id: 123, name: 'foo', type: 'bar', cost: 5 },
{ id: 123, name: 'foo', type: 'bar', cost: 5 },
{ id: 123, name: 'foo', type: 'bar', cost: 5 }
]

本质上,我们看到的是,如果数组中的所有对象共享相同的 id 值,那么数组中的所有对象都会成为数组中第一个对象的副本。

这是 Apollo 客户端的预期行为吗?我们认为这可能与不正确的缓存有关,但我们也想知道 Apollo Client 是否假设具有相同 id 的后续数组成员是同一个对象。

最佳答案

看起来这是预期的行为。 Apollo 客户端根据 id 进行规范化。

关于javascript - Apollo Client 将具有相同 id 和不同值的对象数组替换为第一个对象的副本数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46938885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com