2016-01-21 119 views
1

我在react-router-relay读取的查询:阵营中继+路由器不塌陷嵌套路由

反应路由器中继会自动产生一个合并的中继路线 与来自活性的所有查询和参数阵营路由器路线, 然后将查询结果传递给每个路由组件。由于 查询全部收集到一条路线上,他们将全部为 ,同时整个页面的数据将加载 ,然后一次渲染。

但在我的应用程序中,我实际上看到两个单独的电话/graphql。这里是我的代码:

<Route path="site_:siteId" component={AppSkeleton} queries={SiteAccountQueries}> 
    <Route path="mySites" component={Sites} queries={SiteAccountQueries} /> 
</Route> 

第一次调用获取数据的AppSkeleton,其二为Sites。难道它不应该把它们全部折成一个单一的电话吗?我究竟做错了什么?

回答

2

该文档没有说他们会合并成一个单一的电话。您的查询将合并到一个路由中,并且所有查询都是同时进行的,但查询到网络请求的映射是网络层所关心的问题。

事实上,默认中继网络层将为给定路由中的每个查询都发出单独的HTTP请求;无论您是使用react-router-relay还是只是碰巧有多个查询的路线,都会发生这种情况。

+0

谢谢,这是有道理的。我相信有一个开放的功能要求让网络层足够聪明来聚合各种查询,对吧? –

+1

我不确定是否有此功能请求,但可以构建自定义网络层以进行批处理。 (事实上​​,在Facebook上,我们的内部GraphQL端点有一个批处理端点,我们可以在一个请求中发送一堆查询,并将结果返回到一个请求中。)任何实现都将非常后端特定,因为GraphQL规范目前没有对如何传输查询施加任何要求。 – wincent