2016-01-21 2 views
1

я прочитал на react-router-relay что:Реагировать реле + маршрутизатор не разрушится запросами вложенных маршрутов

реагирует-маршрутизатор-реле будет автоматически генерировать комбинированный маршрут реле со всеми запросами и параметрами из активного React маршрутизатора маршрутов, , затем передайте результаты запроса каждому компоненту маршрута. Поскольку запросы собраны на один маршрут, все они будут отображаться в одновременно, а данные для всей страницы загрузятся , а затем сделают за один раз.

Но в моем приложении я фактически вижу два отдельных звонка на /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

Смежные вопросы