如何解决Apollo Client-cache.gc() 不从规范化缓存中删除对象
我正在尝试使用 cache.gc() 在执行突变后从规范化缓存中删除一个对象。当我删除来自服务器的对象时,我只能从缓存中删除规范化的对象。换句话说,我无法在客户端创建对象(会话)后立即从规范化缓存中删除它。 Cache.gc() 只是不适用于我的 writeFragment 中标准化缓存中新创建的会话/会话。
REACT- 创建新会话
const newSessionSubmit = () => {
newSession({variables: { title: title,price: price,description: description,durationMinutes: durationMinutes },update: (cache,{ data }) => {
newSessionFromresponse]
cache.modify({
fields: {
allSessionPackages(existingPackageRefs = []) {
const newSessionPackageRef = cache.writeFragment({
data: data?.createSessionPackage.session,fragment: gql`
fragment NewSessionPackage on SessionPackage {
id
title
price
description
durationMinutes
}
`
})
return [...existingPackageRefs,newSessionPackageRef]
}
}
})
}
})
REACT- 删除会话
const handleDelete = (session) => {
deleteSession({
variables: { id: session.id },{ data }) => {
if (data?.deleteSessionPackage.outcome) {
cache.modify({
fields: { allSessionPackages(existingPackages,{ readField }) {
return existingPackages.filter(sessionPackage => {
return session.id !== readField('id',sessionPackage)
}
);
}
}
})
cache.gc();
}
}
})
}
姜戈石墨烯
class CreateSessionPackage(graphene.Mutation):
class Arguments:
title = graphene.String()
price = graphene.Float()
duration_minutes = graphene.Int()
description = graphene.String()
session = graphene.Field(SessionPackageType)
@classmethod
def mutate(cls,root,info,title,price,duration_minutes,description):
session = SessionPackage.objects.create(title=title,price=price,duration_minutes=duration_minutes,description=description)
return CreateSessionPackage(session=session)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。