微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apollo Client-cache.gc() 不从规范化缓存中删除对象

如何解决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 举报,一经查实,本站将立刻删除。