У меня очень странная проблема с Apollo Client.
Мы используем [email protected] с реакцией ([email protected]). В нашем проекте мы замечаем, что apollo всегда ждет 1-2 секунды перед отправкой запроса.
Ниже приведен скриншот ситуации:
Вот так выглядит наша клиентская конфигурация:
const customNetworkInterface = {
query: request =>
fetch('/graphql', {
method: 'POST',
credentials: 'include',
mode: 'cors',
cache: 'default',
headers: {
Accept: '*/*',
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
},
body: JSON.stringify({
...request,
query: print(request.query),
}),
})
.then(resp => resp.json())
.then(({ data, errors }) => {
if (errors) {
const userErrors = errors
.filter(({ code }) => +code >= 400 && +code <= 401)
.map(({ message }) => message)
.join('\n');
const serverErrors = errors
.filter(
({ code }) => !code || (+code < 400 && +code > 401)
)
.map(({ message }) => message)
.join('\n');
if (serverErrors.length > 0) {
error(serverErrors);
if (isProduction) {
window.triggerAlert(
'danger',
'The server encountered an error. Our technical team has been notified.'
);
} else {
window.triggerAlert('danger', serverErrors);
}
} else if (userErrors.length > 0) {
window.triggerAlert('danger', userErrors);
}
}
return { data, errors };
}),
};
const networkInterface = createNetworkInterface({
uri: '/graphql',
opts: {
credentials: 'same-origin',
},
});
networkInterface.useAfter([
{
applyAfterware({ response }, next) {
response
.clone()
.json()
.then(responseJson => {
if (responseJson.errors) {
error(
responseJson.errors
.map(({ message }) => message)
.join('\n')
);
}
next();
});
},
},
]);
export const client = new ApolloClient({
networkInterface: customNetworkInterface,
queryDeduplication: true,
addTypename: true,
});
Тогда код запроса с response-apollo:
graphql(RaceResultsQuery, {
props: ({ ownProps, data }) => ({
race_results: _.get(data, 'me.my_race_results', []),
}),
}),
спасибо за совет. однако мы не используем пакетирование или кеширование. Я добавил наш код конфигурации для клиента.
Кажется, что создание / конфигурация клиента выполняется по умолчанию. А как насчет кода клиентского запроса? Как вы называете этот запрос на скриншоте? Вы уверены, что это задержка Аполлона? Может лучше сначала записать / отследить?
Код клиентского запроса довольно стандартный, мы используем response-apollo. Хотя в этой ситуации это довольно сложно отследить. консоль сообщает мне, что вызов задерживается в части graphql.
Может быть, где-то стоит pollInterval? Если он установлен, это может задержать первый запрос для pollInterval. См .: apollographql.com/docs/react/essentials/queries.html#refetch ing В противном случае, похоже, проблема с приложением ...





Первое, что мне приходит в голову: а) что может быть связано с пакетная обработка запросов б) опросные запросы. Но вы должны показать создание / конфигурацию клиента и код запроса.