【问题标题】:React relay+router does not collapse queries of nested routesReact 中继+路由器不会折叠嵌套路由的查询
【发布时间】:2016-04-27 19:34:32
【问题描述】:

我在react-router-relay 上看到:

react-router-relay 会自动生成一个组合的 Relay 路由 来自活动 React Router 路由的所有查询和参数, 然后将查询结果传递给每个路由组件。作为 查询都聚集在一条路线上,它们都将是 同时获取,并且将加载整个页面的数据 然后一次性渲染。

但在我的应用程序中,我实际上看到了对/graphql 的两次单独调用。这是我的代码:

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

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

【问题讨论】:

    标签: reactjs react-router relayjs react-router-relay


    【解决方案1】:

    文档没有说它们被合并到一个调用中。您的查询被组合成一个路由,所有查询都是同时进行的,但是查询到网络请求的映射是网络层关心的。

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

    【讨论】:

    • 谢谢,有道理。我相信有一个开放的功能请求让网络层足够智能以聚合各种查询,对吧?
    • 我不确定是否有对此的功能请求,但可以构建一个自定义网络层来进行批处理。 (事实上​​,在 Facebook,我们的内部 GraphQL 端点有一个批处理端点,我们可以在单个请求中发送一堆查询,并在单个请求中获取结果。)但是,任何实现都将是非常特定于后端的,因为GraphQL 规范目前没有对查询的传输方式提出任何要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 2019-02-18
    相关资源
    最近更新 更多