При использовании _apollo-link-batch-http_ все запросы за определенный интервал времени вызываются пакетно. В нашем приложении большая часть запросов выполняется быстро, но у нас также есть некоторые трудоемкие запросы. Пакетирование известного медленного запроса с другим приведет к ухудшению взаимодействия с пользователем, так как теперь все запросы имеют то же время отклика, что и самый медленный. Вот почему было бы неплохо, если бы был обратный вызов, который мог бы решить, следует ли запускать пакетный запрос немедленно.
Вы можете сделать это с помощью сплита
__links.js__
const batchHttpLink = new BatchHttpLink({
fetch: createApolloFetch({
constructOptions,
uri: process.env.REACT_APP_API_ENDPOINT,
}),
})
const normalHttpLink = createHttpLink({
uri: '/graphql',
credentials: 'same-origin',
})
export split(({getContext}) => getContext().noBatch, normalHttpLink, batchHttpLink)
Сделать запрос, не использующий пакетную ссылку
const ProfileWithData = graphql(CurrentUserForLayout, {
options: {
context: { noBatch: true }
},
})(Profile);
Здесь я использую noBatch
в контексте, чтобы контролировать, следует ли выполнять пакетную обработку запроса. По умолчанию все запросы будут группироваться.
Спасибо за пример @charleyw - я
Самый полезный комментарий
Вы можете сделать это с помощью сплита
__links.js__
Сделать запрос, не использующий пакетную ссылку
Здесь я использую
noBatch
в контексте, чтобы контролировать, следует ли выполнять пакетную обработку запроса. По умолчанию все запросы будут группироваться.