包 apollo-link-http 中的 new HttpLink 和 createHttpLink 之间的差异

Dan*_*iel 12 apollo graphql-js apollo-client

在教程中

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

有提供的new HttpLink语法,但在官方文档中

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

函数createHttpLink被应用。

这两个来源都没有描述这些方法之间的差异。

Jax*_*axx 15

两者没有本质区别。

如果您查看此处apollo-link-http包源,您可以看到导出的方法返回了一个使用您传递给的选项初始化的类的新实例(第 62-194 行)。createHttpLinkApolloLinkcreateHttpLink

在同一个文件的末尾,你可以看到包还导出了HttpLink类,它扩展了ApolloLink类(第 256-261 行):

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

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

请注意,apollo-link-http包装自己的文档不要提了new HttpLink语法,所以我会坚持到createHttpLink语法未来的兼容性。