2016-01-21 174 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