Я полагаю, getGraph
- это fetcher - обратный вызов, возвращаемый useLazyQuery
.
К сожалению, он не возвращает Promise
, но возвращает void
(согласно Apollo docs ). * В Github существует существующая проблема , но я не уверен, будет ли это когда-либо реализовано.
Смотрите, для хуков гораздо более естественно возвращать некоторые данные при каждом рендеринге. На одном рендере у вас есть флаг isLoading = true
, а на следующем вы получаете isLoading = false
и несколько непустых data
. Если вы введете Promise
, который может быть разрешен или отклонен независимо от цикла рендеринга компонента, все становится очень грязным.
Если вам не нравится этот подход (или вам действительно нужно синхронизировать какой-либо запрос с другим) в качестве обходного пути, вы можете запустить query
на client
, доступ к которому осуществляется через ApolloConsumer
.
[UPD] Как писал @Jedi Schmedi в комментариях, fetcher фактически возвращает Promise
, но в более поздней версии (^3.1.2
) apollo
. Так что это может быть обходной путь, хотя я не уверен, что этот API нестабилен и может быть изменен ИЛИ документы вводят в заблуждение.