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

Posted

技术标签:

【中文标题】使用 Apollo 本地状态存储返回数据的不同表示是不是合适【英文标题】:Is it appropriate to use Apollo local state to store a different representation of returned data使用 Apollo 本地状态存储返回数据的不同表示是否合适 【发布时间】:2019-08-06 19:39:42 【问题描述】:

我有一个 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本地状态 是否合适,以便该格式的组件可以查询它?

我预见的主要问题是我认为我必须查询以检查我想要的数据是否存在于本地状态,如果不存在则进行另一个查询。在 Redux 世界中,这将被包装在我的商店中,然后只有在没有“感觉”更干净的所需数据时才会向 API 发出请求。

【问题讨论】:

【参考方案1】:

在我的情况下,这可以使用Afterware in Apollo Client、see this answer for more information 来解决。

它可以让我将返回的数据转换成我需要的形式,并在响应中与原始数据一起返回。

【讨论】:

以上是关于使用 Apollo 本地状态存储返回数据的不同表示是不是合适的主要内容,如果未能解决你的问题,请参考以下文章

无法使用嵌套值设置 Apollo 本地状态

当我在 Vue-apollo 中使用本地状态时如何获取远程 GraphQL 数据

Apollo 本地状态 - 使用未知键查询对象

为啥我的 Apollo 缓存更新没有反映在我的查询中?

我可以使用 Nuxt Apollo 本地状态来完全替换 Vuex 吗?

GraphQL Schema 上的计算字段或使用 Apollo 客户端查询