软件包apollo-link-http中的新HttpLink和createHttpLink之间的区别

时间:2019-06-19 08:19:37

标签: apollo apollo-client graphql-js

在教程中

  

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

显示了new HttpLink语法,但在官方文档中

  

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

功能createHttpLink已应用。

这两个来源均未描述这两种方法之间的差异。

1 个答案:

答案 0 :(得分:2)

两者之间没有根本区别。

如果您查看apollo-link-http包源here,则可以看到导出的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);
  }
}

从上面的代码中可以看到,当通过创建HttpLink类的新实例来创建apollo http链接时,传递给构造函数的选项在内部传递给createHttpLink ,它返回如上所述的ApolloLink实例,并且该实例的RequestHandler传递到(即复制到)新的HttpLink实例的父实例,该父实例也是{{ 1}}(请查看第96-124行here,以了解ApolloLink自己的构造函数)。

请注意,ApolloLink程序包自己的docs不会提及apollo-link-http语法,因此以后我会坚持使用new HttpLink语法兼容性。