【问题标题】:How to derive values in apollo client如何在 apollo 客户端中获取值
【发布时间】:2021-12-01 02:18:39
【问题描述】:

我有一些反应组件会改变我的服务器数据,现在我有 refetchQueries: [{query:myQuery}]。我需要将数据重组为地图以获得更快的查找时间。我怎样才能做到这一点?在 Redux 中,我会使用 reselect,而在 MobX 中,我会使用 @computed。据我所知,apollo 还不支持这个功能。 我调查了:

  • @client directive,但这对我不起作用,因为我必须计算服务器响应上的数据。
  • 反应性变量也不起作用,因为我必须在任何我改变数据的地方更改变量,这远非理想。

在使用 Apollo 客户端时,关于计算/派生值的信息似乎很少,我找到的唯一参考是这个: Apollo GraphQl Storing derived data

【问题讨论】:

    标签: react-hooks graphql apollo apollo-client react-apollo


    【解决方案1】:

    如果您在架构和解析器中定义一些替代(联合)响应结构,怎么样? (不确定这是否真的有效)

    type Query{
        books(mapBy:String): [Book]|JSON
    }
    

    所以如果你查询(为简单起见使用它而不是突变)

    query{
     books(mapBy:"id")
    }
    

    它会返回JSON

    {
      123: { __typename: "Book", name: "Dune"}
    }
    

    如果您不想以 JSON 格式返回所有 Book 字段,可以传递额外的参数来列出您需要的实际结构。

    我自己还没有遇到过这样的问题,有趣。但除此之外,它应该在客户端完成。

    【讨论】:

    • 这不是一个有效的 graphql 响应
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 2021-05-07
    • 2021-10-15
    • 2020-09-02
    • 2018-12-30
    • 2021-11-23
    • 2020-10-19
    • 2021-02-09
    相关资源
    最近更新 更多