Apollo-客户端状态管理缓存在保存和删除操作后不会自动更新



我正在使用apollo-client进行graphql调用,同时我在包apollo-client中添加了状态管理。在 graphql 模块中,将 InMemoryCache 分配给缓存变量并导出客户端变量。客户端变量被导入到组件中,因此默认情况下执行调用后数据在 client.cache.data 中可用,但我想在保存和删除 graphql 操作成功回调后更新客户端缓存

这是我的graphql.module.ts:

import {NgModule} from '@angular/core';
import {ApolloModule, APOLLO_OPTIONS} from 'apollo-angular';
import { ApolloClient } from 'apollo-client';
import {InMemoryCache} from 'apollo-cache-inmemory';
import { HttpLink } from 'apollo-link-http';
const cache = new InMemoryCache();
const link = new HttpLink({
uri:'https://api.graph.cool/simple/v1/ciyz901en4j590185wkmexyex'   
});
export var client = new ApolloClient({
cache,
link
});
@NgModule({ 
})

和我的服务呼叫实施

client
.query({
query: gql`
{         
fORoomTypes()
{
nodes
{
roomTypeId
roomType
ratSingle
ratDouble
ratExtra
statu
}
}
}        
`,
})
.then(result => {      
callback(result);
});    

在回调 client.cache.data 包含数据后,我想用缓存查询调用这些数据,我想自动更新缓存 这是我的保存服务实现

const post = gql`
mutation
{
saveRtype(rt:
{
rty:
{            
rt:"Club room"
rat:4000
cchub:4500
ext:800
statu:1             
}               
traCheck:1
}
)
}
`
client.mutate({
mutation: post
}).then((data) => {
callback(data)
});

我只在 React 中使用了 apollo 客户端,但希望可以阐明它是如何工作的。要"自动"执行此操作,您需要调用 refetchQuery 以在突变后重新获取 fORoomType,或者手动更新缓存。我注意到您的响应没有返回 id 属性,那么它怎么知道要更新哪个属性?如果存在未称为"id"的标识符,请按照本文档注册该标识符。

这是指向您想要的内容的一般文档的链接

https://www.apollographql.com/docs/angular/features/cache-updates/

最新更新