微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ApolloClient 的 SchemaLink 和 HttpLink 有什么区别?

如何解决ApolloClient 的 SchemaLink 和 HttpLink 有什么区别?

对于 ApolloClient,我们可以使用 SchemaLinkHttpLink

使用一种或另一种有什么好处吗?

// SchemaLink
function createLink() {
  const { SchemaLink } = require('@apollo/client/link/schema')
  const { schema } = require('../server/schema')
  return new SchemaLink({ schema })
}

// HttpLink
function createLink() {
  const { HttpLink } = require('@apollo/client/link/http')
  return new HttpLink({
    uri: '/api/graphql',credentials: 'same-origin'
}

// ApolloClient
function createApolloClient() {
  return new ApolloClient({
    link: createLink(),cache: new InMemoryCache()
  })
}

解决方法

HttpLink 是显而易见的,它只是通过 HTTP POST 请求将 GraphQL 查询转发到提供的端点 uri

SchemaLink,好吧,the documentation 在我看来非常清楚:

schema 链接提供了一个 graphql 执行环境,它允许您对提供的 schema 执行 GraphQL 操作。此类行为通常用于服务器端渲染 (SSR),以避免网络调用和模拟数据。

因此,虽然 HttpLink 用于通过网络访问远程 GraphQL 服务器(通常,在客户端应用程序上下文中),但当服务器在本地可用时使用 SchemaLink,我们可以在与服务器端项目相同的源中导入架构,就像在您的示例代码段中一样。

使用一种或另一种有什么好处吗?

它们适用于截然不同的用例,我认为它们不会重叠,所以这里真的别无选择来评估。

它们都可以使用,例如HttpLink 用于浏览器端,SchemaLink 用于同一 React 应用程序的服务器端渲染。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。