[英]How can I use `schema` in apollo client cache?
我在React项目中使用apollo-client
来管理UI状态。 我为阿波罗突变定义了一种模式类型,但它似乎不起作用。
下面是我创建apollo client
实例的方法。
const cache = new InMemoryCache();
export const createClient = () => {
return new ApolloClient({
cache,
resolvers: {
Mutation: {
...alertResolvers
},
},
typeDefs: [alertTypeDefs]
});
};
下面的代码是类型架构定义。 如您所见,我创建了showErrorAlert
返回类型Alert
。
export const alertTypeDefs = gql`
type Alert {
id: ID!
message: String!
type: String!
duration: Int!
}
extend type Mutation {
showErrorAlert(message: String!): Alert
}
`;
我使用下面的代码发送变异。 如您所见,它不会在return对象中返回duration
。 但是该应用程序可以正常工作。 看来类型对应用程序没有影响。
gql`
mutation showErrorAlert($message: String!) {
showErrorAlert(message: $message) @client {
id
message
type
}
}
`;
从文档 :
您可以选择通过ApolloClient构造函数typeDefs参数或本地状态API setTypeDefs方法来设置与Apollo Client一起使用的客户端模式。 此模式不像服务器上那样用于验证,因为graphql用于模式验证的-js模块将大大增加捆绑包的大小。 相反,您的客户端模式用于Apollo Client Devtools中的自省,您可以在其中使用GraphiQL探索您的模式。
换句话说,为本地状态提供typeDefs
的唯一typeDefs
是允许通过Apollo Client Devtools中的GraphiQL查询本地状态。
没有本地状态的类型验证,尽管如果缓存中对象的一般形状与请求的形状不匹配,则客户端将抛出该异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.