使用 Apollo 本地状态来存储返回数据的不同表示是否合适

Is it appropriate to use Apollo local state to store a different representation of returned data

我有一个 Apollo 客户端,用于从服务请求数据。我想使用响应中获得的数据来创建节点和链接网络,例如

// Response data:
{
  "Team": [
    {
      "name": "Example Team",
      "members": [
        { "name": "Bob" },
        { "name": "Alice" }
      ]
    }
  ]
}

// Network data:
{
  "nodes": [
    { "name": "Example Team" }
    { "name": "Bob" },
    { "name": "Alice" }
  ],
  "links": [
    { "source": "Example Team", "target": "Bob" },
    { "source": "Example Team", "target": "Alice" }
  ]
}

从历史上看,在使用 GraphQL 之前,我会使用 Redux 将经过处理的 API 响应存储在状态中并从那里读取。

从 Apollo 获取 GraphQL 结果并立即以不同的形式将其保存回 Apollo local state 以便它可以被该格式的组件查询是否合适?

我预见的主要问题是我认为我必须查询以检查我想要的数据是否存在于本地状态,如果不存在则进行另一个查询。在 Redux 世界中,这将被包裹在我的商店中,如果它没有所需的数据,它只会将请求关闭到 API,'feels' 更干净。

在我的例子中,这可以使用 Afterware in Apollo Client, 来解决。

它可以让我将 returned 数据修改成我需要的形式,并且 return 它与原始数据一起出现在响应中。