如果我有一些深层嵌套的路由,每个路由都包含一个查询组件,是否可以使用任何路由解决方案和apollo客户端组合这些查询或并行运行它们?最好是react-router。
例如
/parent/child/:id/something
父路由将有一个查询并获取一些数据,子路由(具有特定ID)也将获取一些数据,最终第三个查询可能在“某物”视图中以请求其他数据。
因此,当我直接进入/parent/child/:id/something
时,如何在不执行3个graphql请求而仅执行1个graphql请求的情况下获取所有数据?如果不可能,那么至少如何使请求并行运行,这样我就不必等待第一个,第二个和第三个?
令我大吃一惊的是,尚未为Apollo客户找到有关此性能瓶颈以及与之对抗的潜在解决方案的任何信息。
我已经研究了用于设置静态路由的react-router-config,但仍不确定要在其中写入什么逻辑来解决问题?
答案 0 :(得分:0)
是的,Apollo不支持您的用例。
如果要将3个请求打包为1个,也许解决方案是在graphQLServer中创建一个新查询,并在后端服务中调用3次,然后返回所有期望的数据,因此您的客户端只需要调用一次即可,而不是几个次。而您在客户端所做的一切只会传递道具
如果第二个需要第一个的ID,而第二个需要第二个的ID,那么如何并行运行它。这是不可能的
更新后的答案:如果所有这些查询都需要一个ID,您可以按照我的想法进行。希望我没弄错你的问题。
query bigQuery($id: String!){
query1(id: $id) {
field1
field2
}
query2(id: $id) {
field1
field2
}
query3(id: $id) {
field1
field2
}
}