模式链
有助于模拟和服务器端渲染
概述
模式链提供了GraphQL 执行环境,该环境允许您在提供的模式上执行GraphQL 操作。此类行为通常用于服务器端渲染(SSR)以避免网络调用和模拟数据。虽然模式链可以在客户端提供 GraphQL 结果,但当前 GraphQL 执行层对于实际应用来说太重了。
安装
npm install @apollo/client --save
使用方法
服务器端渲染
当在同一服务器上执行SSR时,您可以使用这个库来避免进行网络调用。
import { ApolloClient, InMemoryCache } from '@apollo/client';import { SchemaLink } from '@apollo/client/link/schema';import schema from './path/to/your/schema';const graphqlClient = new ApolloClient({cache: new InMemoryCache(),ssrMode: true,link: new SchemaLink({ schema })});
模拟
有关模拟的更多信息,请参阅graphql-tools 文档。
import { ApolloClient, InMemoryCache } from '@apollo/client';import { SchemaLink } from '@apollo/client/link/schema';import { makeExecutableSchema, addMockFunctionsToSchema } from 'graphql-tools';const typeDefs = `Query {...}`;const mocks = {Query: () => ...,Mutation: () => ...};const schema = makeExecutableSchema({ typeDefs });const schemaWithMocks = addMockFunctionsToSchema({schema,mocks});const apolloCache = new InMemoryCache(window.__APOLLO_STATE__);const graphqlClient = new ApolloClient({cache: apolloCache,link: new SchemaLink({ schema: schemaWithMocks })});
选项
SchemaLink构造函数可以接受一个对象,该对象具有以下属性:
选项 | 描述 |
---|---|
schema | 一个可执行的 GraphQL 模式 |
rootValue | 将传递给解析器的根值(即 rootQuery 的第一个参数) |
context | 将传递给解析器的一个对象,遵循 GraphQL 规范或一个接受操作并返回解析器上下文功能的函数。解析器上下文可能包含操作的所有数据获取连接器。 |
validate | 在执行之前对传入查询与本地模式进行验证,就像非本地 GraphQL 端点通常所做的那样,在 result.errors 中返回验证错误。 |