如何使用Apollo graphql HOC执行多个查询?

时间:2019-10-07 18:02:16

标签: reactjs graphql apollo react-apollo react-hoc

我正在编写一个Web应用程序,我需要查询Apollo的本地状态以及远程API。 Apollo .filter('[data-category="' + categoryName + '"]'); HOC不允许发送多个查询,但提供了一些graphql功能。但是似乎compose软件包没有它。不幸的是,将本地状态请求脚本化为远程请求无法正常工作(根据DevTools,请求已发送,但未提供数据)。 Redux的@apollo/react-hoc仍然无济于事(嗯,很清楚为什么如此)。 没有 React钩子是解决此问题的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

根据@ apollo / react-hoc docs,看来您可以通过将一个查询嵌套在另一个查询中来运行多个查询。

默认情况下,graphql挂钩将数据作为data道具插入,因此对于多个查询,如果没有其他配置,它将无法工作。 config.name来了,所以您可以为注入的道具指定不同的名称,而不是data

export default(
  graphql(
    query1, 
    {name: "data1"}
  )(
    graphql(
      query2, 
      {name: "data2"}
    )(YourComponent)
  )
)

看起来太冗长了。因此,recompose(基本上是redux)compose将为您提供帮助:

export default compose(
  graphql(query1, {name: "data1"}),
  graphql(query2, {name: "data2"})
)(YourComponent);

说实话,这种方法(使用compose)已在他们的文档中进行了描述,但由于它位于描述config的中间位置,因此我认为最好将示例放在这里给任何人在搜索主题时找到。