повторное получение запроса с помощью response-apollo: почему `loading` не соответствует действительности? - PullRequest
0 голосов
/ 25 марта 2019

Я пробую Apollo и использую следующий соответствующий код:

const withQuery = graphql(gql`
query ApolloQuery {
  apolloQuery {
    data
  }
}
`);

export default withQuery(props => {
  const {
    data: { refetch, loading, apolloQuery },
  } = props;

  return (
        <p>
          <Button
            variant="contained"
            color="primary"
            onClick={async () => { await refetch(); }}
          >
            Refresh
          </Button>
          {loading ? 'Loading...' : apolloQuery.data}
        </p>
  );
});

Сервер задерживается на 500 мс перед отправкой ответа с { data: `Hello ${new Date()}` } в качестве полезной нагрузки. Когда я нажимаю кнопку, я ожидаю увидеть Loading..., но вместо этого компонент по-прежнему говорит Hello [date] и перерисовывается через полсекунды.

Согласно это , networkStatus должно быть 4 (refetch), и поэтому loading должно быть истинным. Мои ожидания неверны? Или что-то в отношении кеширования не упоминается в документах React Apollo?

Шаблон проекта, который я использую, использует SSR, поэтому первоначальный запрос происходит на сервере; в браузере происходит только повторная загрузка - только если это может изменить ситуацию.

1 Ответ

1 голос
/ 27 марта 2019

Привет, думаю, вам просто нужно указать notifyOnNetworkStatusChange: true в опциях запроса (по умолчанию это false).

...