Apollo 客户端从缓存中删除 Item

2024-03-23

我正在使用带有 React 的 Apollo 客户端。我用许多不同的变量查询帖子。所以我在不同的“缓存”中有一篇文章。现在我想删除一个帖子。所以我需要从所有“缓存”中删除这个特定的帖子。

const client = new ApolloClient({
    link: errorLink.concat(authLink.concat(httpLink)),
    cache: new InMemoryCache()
});

后查询:

export const POSTS = gql`
    query posts(
        $after: String
        $orderBy: PostOrderByInput
        $tags: JSONObject
        $search: String
        $orderByTime: Int
    ) {
        posts(
            after: $after
            orderBy: $orderBy
            tags: $tags
            search: $search
            orderByTime: $orderByTime
        ) {
            id
            title
            ...
        }
    }
`;

我用cache.modify()尝试了它,它在我的突变中未定义([https://www.apollographql.com/docs/react/caching/cache-interaction/#cachemodify][1])

const [deletePost] = useMutation(DELETE_POST, {
        onError: (er) => {
            console.log(er);
        },
        update(cache, data) {
            console.log(cache.modify())//UNDEFINED!!!
            cache.modify({
                id: cache.identify(thread), //identify is UNDEFINED + what is thread
                fields: {
                    posts(existingPosts = []) {
                        return existingPosts.filter(
                            postRef => idToRemove !== readField('id', postRef)
                         );
                    }
                }
            })
        }
    });

我还使用了 useApolloClient() ,得到了相同的结果。

感谢您的帮助。


而不是使用cache.modify您可以使用cache.evict,这使得代码更短:

deletePost({
    variables: { id },
    update(cache) {
        const normalizedId = cache.identify({ id, __typename: 'Post' });
        cache.evict({ id: normalizedId });
        cache.gc();
    }
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apollo 客户端从缓存中删除 Item 的相关文章

  • 列表项未正确删除(React)

    如果我的笔记应用程序能提供一些帮助 我将不胜感激 假设我的笔记列表中有 3 个笔记 我想删除列表顶部的注释 无论我尝试删除哪一个 总是首先删除列表最底部的注释 我检查了 React 控制台 应用程序组件状态中的注释数组表明它已正确删除 但从
  • 在 package.json 中声明时 Reactify 转换未运行

    我正在尝试将reactify 转换与browserify 和gulp 结合使用 这个 gulp 任务有效 return browserify paths node modules app scripts entries app script
  • 在 firebase 中存储空数组

    我的 firebase 应用程序与 React 一起使用 我可以注册用户 然后将信息记录到数据库中 我正在创建一个 约会应用程序 我想要某种方法来存储空数组 例如 matchers etc 我尝试过这样的事情 firebase databa
  • 使用 ScrollView 避免键盘输入

    我是 React Native 的新手 并且有一个我在 React Native 文档中没有找到的问题 我正在研究这个组件KeyboardAvoidingView https facebook github io react native
  • 当输入为空时如何禁用按钮?

    我试图在输入字段为空时禁用按钮 React 中最好的方法是什么 我正在做类似以下的事情
  • 我可以打包 Webpack 但不缩小调试范围吗?

    似乎是一个真正愚蠢的问题 必须在某个地方有答案 但我已经搜索了几个小时但没有结果 我是 ReactJS 和使用 Webpack 构建的新手 一般来说是构建配置 我正在使用 Webpack 链接和捆绑我的整个项目 包括 ReactJS 它工作
  • 在本地主机中保存更改后,React 组件不会在浏览器中重新加载

    我使用 Create React App 创建了一个新的 React 项目 在旧项目中 每当我在组件中进行更改并保存组件时 它都会反映在浏览器中 但在新项目中 当我保存代码中的更改时 浏览器不会重新加载 也不会反映更改 所以我停止了正在运行
  • Excel JS - 获取范围数字格式

    我正在 React 中使用 Excel Office JS API 数据被推送到 Excel 范围 我正在尝试执行以下逻辑 检查范围 单元格格式是否为常规 如果是通用格式 则将格式设置为特定的日期时间格式 如果不是通用格式 请勿更改格式 看
  • 类型错误 [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到的类型未定义

    我正在尝试在本地计算机中运行反应应用程序 运行时出现此错误npm run start gt node scripts start js internal validators js 125 throw new ERR INVALID ARG
  • useState 由于某种原因没有更新?

    当我尝试使用 axios 从后端 API 获取一些数据 并在由于某种原因获得结果后设置状态时 状态不会更新 当我尝试使用状态时 它只会向我显示一个空数组 但有趣的是当我console log res data 它会毫无问题地向我显示我的列表
  • 如何在 React 中正确捕获 Materialize-CSS datepicker 值?

    我希望创建一个带有日期选择器 https materializecss com pickers html在我的 React 组件中物化CSS https materializecss com 该表单捕获的字段不多 而且结构相当简单 返回的表
  • 如何在提交值后重置 antd datepicker?

    在这里 我提供了在codesandbox上工作的示例 提交表单后如何重置日期选择器值 state setFieldValue onChange setFieldValue gt this setState setFieldValue nul
  • 更改 Office UI Fabric React 组件的颜色/主题?

    我正在尝试使用Office UI Fabric React 组件 https dev office com fabric components在我的网络应用程序中 有没有办法改变组件的颜色或主题 例如 我尝试了这样的事情 ReactDOM
  • 给出 HTML 和 Xpath 时突出显示

    给定 HTML 作为字符串 Xpath 和偏移量 我需要强调这个词 在下面的例子中我需要强调Child 1 HTML 文本 h2 Children h2 Joe has three kids br ul li a href Child 1
  • 如何使用 Typescript 从 mui 扩展调色板

    我正在尝试扩展 mui 提供的调色板 覆盖主色 次要颜色等效果很好 但如果我想在之后创建一组自定义颜色 我不知道如何使其工作 有很多没有打字稿的例子 但是当这个人进入游戏时 事情就变得更加棘手 假设我有这个 主题 tsx palette p
  • 如何过滤javascript对象数组

    我有两个数组 我正在使用 PubSidebar 过滤基于 groupKey 的内容 let groupKey oaDeal Journals Deposit This array of object will be filtering wi
  • MuiThemeProvider:如何为不同的路线使用不同的主题?

    我需要根据网站的当前部分稍微更改主题 看起来MuiThemeProvider仅套muiTheme负载 但当 props 改变时需要更新 如何才能做到这一点 您可以尝试将主题放入包装组件中 以保持主题的状态 使用React 的上下文 http
  • 我应该开发一个单独的 Express 服务器,还是处理 next.js 应用程序中的所有 API 调用?

    我的网站将执行 CRUD 操作 并将与 MongoDB 和 Firebase 存储 身份验证配合使用 开发单独的 Express 服务器而不是将所有内容集成到我的 next js 应用程序中的原因 优势是什么 据我所知 这一切都可以在我的
  • React Native 将样式设置为 State

    我想用backgroundColor of style1作为一种状态 并在函数中改变它change 我怎样才能访问style1 我的观点是调用该函数change从另一个函数 使按钮将其颜色更改为黄色 然后在一段时间后再次将其颜色更改为蓝色
  • React + 路由器 + Google 标签管理器

    我花了一些时间在 Quickcypher com 上开发 MVP 我想开始进行一些分析 它对于跟踪总访问量非常有用 但是当我尝试跟踪使用 React Router 的网站上的不同 URL 时 情况却出问题了 我的方法是这样的 设置一个在某些

随机推荐

  • C: 如何确定外部数组的 sizeof(array) / sizeof(struct) ?

    定义类型x和一个数组X那种类型的 x h typedef struct x int p q r x extern x X 单独的文件来保存巨大的喇叭阵列X x c include x h x X lotsa stuff 现在我想用X mai
  • 在“打开资源”对话框中键入内容时,是否可以通过目录而不是仅通过文件名来查找文件?

    I have been using extensively Ctrl Shift to find and open files in my Eclipse project But sometimes I know the directory
  • JPG 与 JPEG 图像格式

    我经常使用JPEG图像 我注意到有两个非常相似的文件扩展名 jpg 我手机的摄像头和Preview应用程序的使用 以及 jpeg 其中图像捕捉保存用我的扫描仪扫描的图像佳能MX455打印机 LaTeX似乎没有区别 因为我给了它一个 jpeg
  • 在同一个try块中锁定多个ReentrantReadWriteLock是否安全?

    假设我有两个关键资源 foo 和 bar 我用一些东西来保护他们ReentrantReadWriteLock http docs oracle com javase 7 docs api java util concurrent locks
  • 在jquery中为mouseleave添加延迟

    我在我的网站中使用这段代码 我想知道如何为 mouseleave 函数添加延迟 target mouseenter function e var tooltip this tipid ddimgtooltip showbox tooltip
  • 具有单独轴的 Apache-POI 图表中的第二行

    您好 这段代码取自答案here https stackoverflow com questions 55192804 how do i add a second line with a second axis to an xddfchart
  • UIWebView - 如何禁用操作表 (UIActionSheet)?

    我想知道如何禁用 UIActionSheets 特别是点击并按住 UIWebView 中的超链接后显示的操作表 这些似乎在 UIWebViews 中默认启用 其中包含警报标题中相应链接的链接地址 它们也在 Safari 中启用 如何 是否可
  • 画圆圈:将代码分成类

    我正在尝试用随机颜色和随机直径绘制圆圈mousePressed事件 但当我尝试稍微组织我的代码 将我的代码分成类 时 我遇到了一些问题 控制器类 public class Controller implements MouseListene
  • Webpack SCSS 图像 URL 链接在嵌套路由上损坏

    这是我的目录结构 public src app js assets images logo b green png stylesheets nav scss And webpack config js module exports entr
  • 使用curl NuGet无法解析的外部符号

    环境 微软视觉工作室 2017NuGet 包管理器C 项目 工作流程 我使用 NuGet 添加了curl 我尝试编译我的项目 它抛出 8 个链接器错误 无法解析的外部符号 项目结构 root gt packages gt curl 7 30
  • for循环中的setTimeout不打印连续值[重复]

    这个问题在这里已经有答案了 我有这个脚本 for var i 1 i lt 2 i setTimeout function alert i 100 But 3两次都会收到警报 而不是1 then 2 有没有办法通过i 而不将函数写为字符串
  • repo 同步命令的替代方案是什么?

    我是 git 新手 我想在完成后手动执行清单文件repo init 而不是做repo sync 测量正常 git 命令和repo sync在不同的情况下 但我不确定 repo 使用哪个 git 命令 我知道repo只是大型代码库的 git
  • 寻找返回黑盒模型最大输出的最佳输入组合

    在我的工作中将人工神经网络应用于回归任务时 我面临的挑战之一是 为了找到给定输入范围的最佳结果 我必须将多维网格输入到我的模型中 然后简单地选择最高的价值 然而 这总体上是一个计算成本非常高的解决方案 下面的文字长度可能会令人恐惧 但这只是
  • 在数据框或向量中查找非数字数据

    我读了一些冗长的数据read csv 令我惊讶的是 数据是以因子而不是数字的形式出现的 所以我猜测数据中必须至少有一个非数字项 我怎样才能找到这些物品的位置 例如 如果我有以下数据框 df lt data frame c 1 2 3 4 f
  • Django 在 save() 中获取对象的 ID

    我有一些固定的数字 可以说是num 1000现在我的字段需要是 object id 和 num 的总和 我需要在 save 中使用它 如下所示 def save self args kwargs num 1000 self special
  • 将单个数组分成两个数组的代码是怎样的?

    当我使用所需 URL 的 JSON 解析时 我在 nsarray 中得到以下响应 但在这里我不喜欢得到 2 1 4 4 6 5 8 7 10 9 12 和 11在单个数组中 我必须获得两个数组的总响应 我的意思是一个数组集将包含 2 4 6
  • 如何从Javascript数组中删除“[”和“]”符号

    我在用着react js用于构建我的仪表板 我想转换这样的数组 旧版本 进入这个 新版本 in javascript 所以我可以将新版本的数组放入 JSON 数组中 如下所示 newArray 我认识一个map函数返回一个数组 我知道这是一
  • 无法在 git bash 中使用命令 telnet

    我尝试使用命令telnet在 Git Bash 中 但它显示此错误 bash telnet 未找到命令 我的操作系统是 Windows 10 如有任何想法 我们将不胜感激 那是因为 git 没有提供 telnet 在 Windows 中 您
  • 我可以用一份许可证在两台机器上安装 VS 吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是一名兼职教授 教授数据库和编程课程 我拥有一台运行 Windows 的台式机和笔记本电脑 我拥有 VS 2010 的学术版 并在家中安
  • Apollo 客户端从缓存中删除 Item

    我正在使用带有 React 的 Apollo 客户端 我用许多不同的变量查询帖子 所以我在不同的 缓存 中有一篇文章 现在我想删除一个帖子 所以我需要从所有 缓存 中删除这个特定的帖子 const client new ApolloClie