如何解决ApolloClient 的 SchemaLink 和 HttpLink 有什么区别?
对于 ApolloClient
,我们可以使用 SchemaLink
或 HttpLink
。
使用一种或另一种有什么好处吗?
// 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 举报,一经查实,本站将立刻删除。