替换 Query 对象的 my 字段时,缓存数据可能会丢失

2023-12-19

这是我的代码

const NewVerificationCode = () => {
  const { loading, error, data = {}, refetch } = useQuery(CONFIRMATION_CODE, {
    skip: true,
    onError: (err) => {},
  });
  console.log(loading, error, data);

  if (loading || error) {
    return <ErrorLoadingHandler {...{ loading, error }} />;
  }

  return (
    <form
      onSubmit={(e) => {
        refetch();
        e.preventDefault();
      }}
    >
      <div>
        <button type="submit" className="signUpbutton">
          {"Send the message again"}
        </button>
      </div>
    </form>
  );
};

const CONFIRMATION_CODE = gql`
  query {
    my {
      sendNewTokenForConfirmation
    }
  }
`;

当我提出请求时,我收到警告

替换 Query 对象的 my 字段时,缓存数据可能会丢失。

要解决这个问题(这不是 Apollo Client 中的错误),要么确保所有 My 类型的对象都有 ID,要么为 Query.my > 字段定义自定义合并函数,以便 InMemoryCache 可以安全地合并这些对象 现存的:

    {"__typename":"My","getUser{"__typename":"User","email":"[email protected] /cdn-cgi/l/email-protection"}}

incoming: {"__typename":"My","sendNewTokenForConfirmation":"SUCCESS"}

有关这些选项的更多信息,请参阅文档:

我点击了链接。

我阅读了文档并意识到问题出在 apollo 客户端缓存(typePolicies)中。

但我应该如何解决这个问题我就是不知道。

我应该在 typePolicies 中写什么来消除警告?


您可能需要为 Apollo 返回一个 id 来唯一标识缓存中的该对象。 我觉得这个问题和你的很相似:link https://stackoverflow.com/questions/63123558/apollo-graphql-merge-cached-data?rq=1

const CONFIRMATION_CODE = gql`
  query {
    my {
      id
      sendNewTokenForConfirmation
    }
  }
`;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

替换 Query 对象的 my 字段时,缓存数据可能会丢失 的相关文章

  • 使用代理时,React 应用程序正在不同位置查找静态文件

    我用过npx create react app my app创建一个反应应用程序 我用过的npm run build构建应用程序并使用它进行部署serve s build 我正在使用代理服务器来公开我的应用程序 我的 httpd 配置如下所
  • 使 Material UI Grid 项目的子项拉伸以适合父容器的剩余高度

    1 现状 我有一个包含 4 个网格项的 Material UI 网格容器 每个 Grid 项中都有一个 Typography 组件 其中包含标题和包含一些内容的 Card 如下所示 2 期望的外观 我希望卡片填充网格项目的剩余高度并且不超过
  • p5 向量减法“sub”返回错误

    我一直在尝试将 p5 草图上传到 React 构建中 使用react p5 wrapper 我能够成功在屏幕上渲染画布 但是 某些矢量函数会导致错误 var distance this position dist ball position
  • 使用文本字段同时过滤react-table和react-leaflet标记(在表中显示过滤数据并在地图中显示标记)

    我是反应传单的新手 需要一点帮助来解决我的问题 跟进上一篇文章 https stackoverflow com questions 52557802 how to get the number of map markers per coun
  • 您在 javascript Web 应用程序中使用的第三方 API ApiKey 存储在哪里?

    如何以及在何处存储您在 javascript Web 应用程序中使用的第三方 API ApiKey 又名 AppId AppSecret AppKey 如果它用于获取 URL 并且在浏览器网络选项卡中可见 我是否应该对其保密 示例 在我的
  • 如何禁用 Chrome 自动完成功能?

    我们想要禁用自动完成在 Chrome 浏览器中的 React JavaScript 应用程序中 我们尝试了互联网上提供的一系列解决方案 但没有任何效果 autoComplete off不可靠 其他方法也不可靠 目前这对我们来说非常重要 所以
  • React PropTypes 与 Flow

    PropTypes 和 Flow 涵盖相似的内容 但使用不同的方法 PropTypes 可以在运行时向您发出警告 这有助于快速找到来自服务器等的格式错误的响应 但是 Flow 似乎是未来 并且具有泛型等概念 是一个非常灵活的解决方案 Nuc
  • 使用 React.lazy 时未捕获未定义的错误

    我正在尝试实施基于路由的代码分割 https reactjs org docs code splitting html route based code splitting正如 React 文档中提到的 这是添加延迟实现之前我的应用程序 这
  • 如何在react-router-dom v6中的路由组件中添加道具

    正如标题所述 我曾经有一个带有状态组件的页面 该组件根据 url 的更改获取不同的 props 现在 升级到React Router v6 我真的不明白如何让它再次工作 我确实知道现在解决这个问题的唯一方法是使用诸如 useNavigate
  • 如何在 React 组件测试中使用 data-testid 属性?

    我正在对一个简单的反应组件进行组件测试 我想渲染该组件 然后对其进行一些测试 问题是cy get 似乎没有找到基于的组件data testid属性 我用一个简单的方法测试了它div和div能找到就好了 我在检查时也注意到DOM在 cypre
  • 如何让孩子做出反应

    我正在尝试做我自己的Tabs组件 以便我可以在我的应用程序中使用选项卡 然而 我似乎在尝试按类型提取我需要的子组件时遇到问题 import React from react export class Tabs extends React C
  • useLocation 挂钩 - 确定过去的位置

    根据 React Router 5 1文档 https v5 reactrouter com web api location应该可以看到 应用程序现在在哪里 你想让它去哪里 甚至它曾经在哪里 在我的应用程序中 我需要查看 它在哪里 我访问
  • HTMLImageElement 作为 React Child 无效

    我正在尝试异步加载图像 并且仅在加载图像后才将其显示在 React 应用程序中 componentDidMount const img new Image img onload gt this setState originalImage
  • 将 Sweet Alert 弹出窗口添加到 React 组件中的按钮

    我为 Bootstrap 和 React 找到了这个完美的 Sweet Alert 模块 我在 Meteor 应用程序中使用它 http djorg83 github io react bootstrap sweetalert http d
  • React无限滚动scrollableTarget动态获取id?

    我在我的项目中使用react infinite scroll component 如何让scrollableTarget动态获取item id 我试过这样scrollableTarget item id 但它不起作用 必须与该 div 具有
  • React Native 反应导航 SafeArea 问题

    我更新了我的android项目 react navigation was 3 x 搬去5 x 决定实施必要的更改 但它不想工作 从反应导航页面复制了示例 但仍然显示相同的错误 有人知道问题出在哪里吗 当我用谷歌搜索一半的互联网时找不到解决方
  • 如何使用 setState 插入 React 的状态数组?

    我正在寻找在反应中修改和数组并在特定索引上插入元素 这就是我的状态 this state arr 我想做的是编译这个arr index random element 反应 js setState 语法 我试图做的是 this setStat
  • 如何在 React JS 中根据键创建动态表?

    我正在尝试在 React JS 中创建一个动态表组件 该组件当前只有一个静态标头 其中包括最常见的结果键 有些结果还包含更多信息 例如电话号码 学位 如何根据键 值的存在动态地使用附加列扩展表 我应该与state并在存在时使其可见 或者我应
  • 删除旧版本的 create-react-app

    我想使用创建一个新的反应应用程序create react app脚本 我仍然安装了一个不再受支持的全局版本 因此我卸载了全局版本并尝试创建一个新版本 如下所示 npx create react app myapp 然后我得到了一个没有使用模
  • React Native Expo StackNavigator 重叠通知栏

    我正在尝试为我的 React Native Expo 应用程序实现导航栏 这里有一个问题 dependencies expo 18 0 3 react 16 0 0 alpha 12 react native 0 45 1 react na

随机推荐

  • 谷歌文档脚本,搜索和替换文本字符串并更改字体(例如粗体)

    我是谷歌文档脚本的新手 在谷歌文档中 我需要搜索几个文本字符串 例如 lightface字体的 student 1 以将这些文本字符串替换为另一个文本字符串 例如 学生A 但在boldface font 为了搜索和替换 我使用以下代码 fu
  • 何时在 LINQ 中使用 lambda 表达式而不是Where子句

    我一直在深入研究 LINQ 并且正在尝试解决这个 lambda 表达式业务 我只是没有看到语法的一些细微差别的好处 首先 在我看来 lambda 表达式主要只是使用Where 子句的一种不同方式 那么为什么我不直接使用Where 子句呢 l
  • 在 Android 上使用 pjsip

    我成功安装并构建了pjsip图书馆和pjsua对于Android 我跑了pjsua在我的设备上并且它有效 但是我仍然不知道如何使用这个库的方法 我已经看过了CSipSimple应用程序 我注意到jni这两个项目的文件夹非常不同 我是否必须将
  • Google 计算引擎 .NET API 示例/样本/教程

    我还没有找到任何可以清楚地解释如何通过 net API 特别是 c 使用 google 计算引擎的内容 有没有人可以给我指点什么 附 我知道 API 参考 https developers google com resources api
  • 批量裁剪和调整图像大小以创建缩略图

    我有一大堆 jpg 图像 我想为其创建缩略图 这些图像都有不同的尺寸和分辨率 但我希望所有缩略图都有标准尺寸 例如120x80 像素 但是 我不想拉伸图像 所以我想做以下一些事情 将图像裁剪为 1 5 1 的宽高比 将裁剪区域居中 即左右
  • 如何使用 Google App 脚本在 Google 文档中插入 RichLink(Chip Block)

    Google Docs 最近推出了一个功能 大家可以参考一下 Date Person 谷歌云端硬盘文档 以一个形式芯片块 如上图所示 这文件 A已存在于 Google 云端硬盘中 目前生成此类 Chip Block 的唯一方法是手动将鼠标悬
  • 如何阻止注入的 HTML-div / CSS 继承样式? (IE浏览器)

    我正在为 Internet Explorer 创建一个扩展 在网页上注入 CSS 样式的 span 标签 如果单击该组件的特定部分 则会显示一个弹出窗口 这个弹出窗口实际上是一个 DIV 元素 我在内容页面的最后注入了 BODY 标签 我在
  • C# 比较两个集合的更有效方法

    我有两个收藏 List
  • Treeview 节点具有透明文本背景而不是默认的白色

    我正在使用自定义绘制来尝试创建透明树视图 现在我正在测试启用视觉样式时 My CDDS PREPAINT处理程序工作正常 树已正确绘制父级的背景位图 我尝试添加CDDS ITEMPREPAINT我使用的处理程序SetBkColor LPNM
  • 将文本添加到 .txt 文件中每个新行的开头

    我想将预定义文本添加到文本文件上的每个新行 并使用添加的文本创建一个新的文本文件 请帮忙 在 Windows 中 可以这样做 for f delims L in oldfile txt do echo predefined text L g
  • 覆盖 Salesforce Apex 中抽象类的属性

    我在 apex 中有一个抽象类 其中有几个我想在子类中重写的属性 根据文档 属性支持覆盖和虚拟访问修饰符 但是 当我尝试在父类或子类中使用它们中的任何一个时 我收到一条错误消息 指出变量不能标记为虚拟 覆盖 以下是导致此错误的代码的传真 p
  • Struts2 jQuery标签选择不加载数据

    我正在尝试使用
  • 将整个文件传递给 JVM 参数

    我有几个系统都需要将相同的属性加载到 JVM 我可以使用 D 标志一次加载一个属性 但我正在寻找一种可以一次性加载整个文件中所有属性的东西 例如 我可以将 options file blah properties 添加到网络上的所有 jvm
  • 群发电子邮件跟踪

    如今 大多数在线提供的服务都声称可以 跟踪 电子邮件 但都是通过在电子邮件中嵌入图像来实现这一目的 我的问题是 这是唯一的方法吗 如果不是 还有其他方法吗 这些方法真的万无一失吗 有人对特定软件甚至在线小组有过任何运气吗 是的 这几乎是唯一
  • 数据库中已有一个名为“tbltable1”的对象

    我正在尝试将数据从一个表插入到具有相同结构的另一个表中 select into tbltable1 from tbltable1 Link 我收到以下错误消息 There is already an object named tbltabl
  • 在 TextBlob 中使用翻译功能时出现“HTTPError: HTTP Error 404: Not Found”

    当我尝试在 jupyter 笔记本的 TextBlob 库中使用翻译函数时 我得到 HTTPError HTTP Error 404 Not Found 我在这里发布了我的代码和错误消息的屏幕截图以供参考 5 6 天前 当我第一次运行完全相
  • 改变statusStrip的高度

    我在VS2010中有一个带有statusStrip的简单Windows窗体 无论我尝试什么 statusStrip的高度都没有改变 改变高度的正确方法是什么 thanks 我刚刚更改了 StatusStrip 大小 没有出现问题 创建一个新
  • 无法推断通用参数“T”

    我正在重构我的代码并添加对 Swift 的支持generics 我遇到了编译器错误 我的代码是 func dequeueReusableViewController
  • Passport 和 connect-flash:req.flash 不是函数

    我在学flash消息输入passport并在运行我的脚本时遇到此错误 req flash is not a function 这是我的配置 var flash require connect flash app use flash pass
  • 替换 Query 对象的 my 字段时,缓存数据可能会丢失

    这是我的代码 const NewVerificationCode gt const loading error data refetch useQuery CONFIRMATION CODE skip true onError err gt