如何在阿波罗客户端缓存中使用“模式”?

时间:2019-07-02 05:07:54

标签: graphql apollo react-apollo apollo-client

我在React项目中使用apollo-client来管理UI状态。我为阿波罗突变定义了一种模式类型,但似乎不起作用。

下面是我创建apollo client实例的方法。

const cache = new InMemoryCache();

export const createClient = () => {
  return new ApolloClient({
    cache,
    resolvers: {
      Mutation: {
        ...alertResolvers
      },
    },
    typeDefs: [alertTypeDefs]
  });
};

下面的代码是类型架构定义。如您所见,我已经创建了showErrorAlert的{​​{1}}返回类型。

Alert

我使用以下代码发送变异。如您所见,它没有在返回对象中返回export const alertTypeDefs = gql` type Alert { id: ID! message: String! type: String! duration: Int! } extend type Mutation { showErrorAlert(message: String!): Alert } `; 。但是该应用程序可以正常工作。看来类型对应用程序没有影响。

duration

1 个答案:

答案 0 :(得分:0)

来自docs

  

您可以选择通过ApolloClient构造函数typeDefs参数或本地状态API setTypeDefs方法来设置要与Apollo Client一起使用的客户端架构... 该架构不像以前那样用于验证在服务器上运行,因为用于模式验证的graphql-js模块将大大增加捆绑包的大小。相反,您的客户端模式用于Apollo Client Devtools中的自省,您可以在其中使用GraphiQL探索您的模式。

换句话说,为本地状态提供typeDefs的唯一目的是可以通过Apollo Client Devtools中的GraphiQL查询本地状态。

没有针对本地状态的类型验证,尽管如果缓存中对象的一般形状与请求的形状不匹配,则客户端将抛出该异常。