我使用react-apollo
来管理我的react应用程序中的客户端存储,所以没有后端graphql服务器。所有与apollo
相关的东西都在客户端运行。我将所有UI状态存储在ApolloClient
的缓存中。我还在客户端定义了所有的解析器。
下面是新建客户端实例的代码:
new ApolloClient({
cache,
resolvers: {
Mutation: {
...cartResolvers,
},
},
typeDefs: [typeDefs]
});
我读过这篇关于在apollo graphql变异和查询中使用ID
自动更新存储的文章https://www.apollographql.com/docs/angular/features/cache-updates/#automatic-store-updates。但它似乎不起作用。我有下面的查询和突变:
export const queryCart = gql`
{
cart @client {
items {
id
name
price
quantity
image
}
}
}
`;
export const addToBasket = gql`
mutation addToBasket($sku: ID!) {
addToBasket(id: $sku) @client {
items {
id
name
price
quantity
image
}
}
}
`;
我已经定义了变异addToBasket
的解析器。
const addToBasket = (_parent: any, item: { id: string }, { cache }: ResolverCacheType): CartProps => {
...
return {
items: [ {id, name, price, quantity, image } ]
}
}
我发现,即使我在解析器中返回id
,缓存也不会更新,查询也不是被动的。我可以通过手动更新resolve by cache.writeData
中的缓存数据来使其工作。
https://stackoverflow.com/questions/56799534
复制相似问题