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

如何从 Apollo Cache 突变后删除项目?

如何解决如何从 Apollo Cache 突变后删除项目?

我有一个数据库删除项目的突变。我知道更新 Apollo 缓存的一种可能方法是指定一个 update 函数,该函数将在成功响应后调用。我也知道有几种方法可以使用 cache.modifycache.readQuery/cache.writeQuery 函数来实现。

Apollo 文档提供的示例展示了如何remove an item from a list。不幸的是,文章中提供的示例显示了如何更新嵌套属性而不是删除整个对象。

您能帮我了解如何正确地从缓存中删除整个项目吗?

我使用 Apollo-Client v3+

这是我的代码部分

export const REMOVE_ITEM_MUTATION = gql`
  mutation RemoveItem($itemId: String!) {
    removeItem(input: {
      itemId: $itemId
    }) {
      itemId # Returns an id of successfully deleted object
    }
  }
`
  

const [removeItem,{ loading }] = useMutation(
  REMOVE_ITEM_MUTATION,{
    update: (cache,result) => {
      // How to use cache.modify? 
    },onError: (error) => { /*...*/ },onCompleted: (value) => { /*...*/ }
  }
)

附言我也很困惑,cahce.modify 函数是否可以代替 cache.readQuerycache.writeQuery?我把它当作一种从 Apollo Client 3 开始修改缓存的新方法。我说得对吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。