Отличия между новым HttpLink и createHttpLink из пакета apollo-link-http - PullRequest
1 голос
/ 19 июня 2019

В учебнике

https://www.howtographql.com/vue-apollo/1-getting-started/

представлен синтаксис new HttpLink, но в официальных документах

https://www.apollographql.com/docs/link/links/http/

применяется функция createHttpLink.

Ни один из этих двух источников не описывает различия между этими методами.

1 Ответ

2 голосов
/ 19 июня 2019

Между этими двумя понятиями нет принципиальной разницы.

Если вы посмотрите на apollo-link-http источник пакета здесь , вы увидите, что экспортированный метод createHttpLink возвращает новый экземпляркласса ApolloLink, инициализированного параметрами, которые вы передали createHttpLink (строки 62-194).

В конце того же файла вы видите, что пакет также экспортирует класс HttpLink, который расширяет класс ApolloLink (строки 256-261):

export class HttpLink extends ApolloLink {
  public requester: RequestHandler;
  constructor(opts?: HttpLink.Options) {
    super(createHttpLink(opts).request);
  }
}

Как видно из приведенного выше кода, при создании http-ссылки apollo путем создания нового экземпляра HttpLinkкласс, параметры, которые вы передаете в конструктор, внутренне передаются в createHttpLink, который возвращает экземпляр ApolloLink, как упомянуто выше, а RequestHandler этого экземпляра передается (то есть копируется) в новый HttpLinkродительский экземпляр, который также является экземпляром ApolloLink (см. строки 96-124 здесь для просмотра собственного конструктора ApolloLink).

Обратите внимание, что apollo-link-http документы do NOT пакета включают в себяСинтаксис new HttpLink, поэтому я буду придерживаться синтаксиса createHttpLink для будущей совместимости.

...