如何从突变中获取新对象的ID?

2023-11-23

我有一个createObject突变返回新对象的 ID。

返回后,我想重定向到有关新对象的详细信息页面。

如何使用反应/中继从包含组件中的突变获取响应字段?

E.g. my createObject页面包含如下代码的突变:

var onFailure = (transaction) => {

};

var onSuccess = () => {
  redirectTo('/thing/${newthing.id}');   // how can I get this ID?
};

// To perform a mutation, pass an instance of one to `Relay.Store.update`
Relay.Store.update(new AddThingMutation({
  userId: this.props.userId,
  title: this.refs.title.value,
}), { onFailure, onSuccess });
}

newthing应该是变异创建的对象,但是我怎样才能得到它呢?


通常我们会配置突变的客户端RANGE_ADD并返回一个新的thingEdge来自突变的服务器端,但在这里您没有客户端上的范围来添加新节点。要告诉 Relay 获取任意字段,请使用REQUIRED_CHILDREN config.

服务器端突变

var AddThingMutation = mutationWithClientMutationId({
  /* ... */
  outputFields: {
    newThingId: {
      type: GraphQLID,
      // First argument: post-mutation 'payload'
      resolve: ({thing}) => thing.id,
    },
  },
  mutateAndGetPayload: ({userId, title}) => {
    var thing = createThing(userId, title);
    // Return the 'payload' here
    return {thing};
  },
  /* ... */
});

客户端突变

class AddThingMutation extends Relay.Mutation {
  /* ... */
  getConfigs() {
    return [{
      type: 'REQUIRED_CHILDREN',
      // Forces these fragments to be included in the query
      children: [Relay.QL`
        fragment on AddThingPayload {
          newThingId
        }
      `],
    }];
  }
  /* ... */
}

用法示例

var onFailure = (transaction) => {
  // ...
};

var onSuccess = (response) => {
  var {newThingId} = response.addThing;
  redirectTo(`/thing/${newThingId}`);
};

Relay.Store.update(
  new AddThingMutation({
    title: this.refs.title.value,
    userId: this.props.userId,
  }), 
  {onSuccess, onFailure}
);

请注意,您使用此技术查询的任何字段都将可供onSuccess回调,但会not添加到客户端商店。

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

如何从突变中获取新对象的ID? 的相关文章

  • ExtJS 4 用于选择所选值的组合框事件

    由于某种原因 我需要知道用户何时从组合框中选择了值 即使它已经被选择 仅当用户选择未选择的项目时 选择 事件才起作用 我在组合框或选择器的文档中没有看到任何类似 itemclick 的事件 有任何想法吗 ComboBox uses 绑定列表
  • CSS - 制作“步进”文本的好方法?

    有没有一种好的方法可以实现以下目标 而无需任何额外的标记 不过使用 JavaScript 就很好了 任何想法 Thanks Edit 我的标记将是这样的 div style width 400px p Text text text Text
  • 执行oauth时如何创建弹出窗口?

    我想通过使用弹出窗口来完成 Lifestream 和其他网站使用 oauth 身份验证所做的事情 他们打开一个弹出窗口 不知何故没有被弹出窗口拦截器阻止 并将他们的网站变灰 然后 在允许 oauth 访问时 它会说重定向回原始站点并终止弹出
  • VSCode 在 React 的 JSX 中错误地格式化三进制

    我正在运行 VSCode 来开发我的 React 应用程序 我有一个简单的三元 isLoading
  • Javascript:更改浏览器后退按钮的功能

    有没有办法让用户的浏览器上的后退按钮调用 JavaScript 函数而不是返回页面 您无法覆盖这样的行为 如果用户通过链接访问您的页面 则单击 后退 将使他们再次离开该页面 但是 您可以使页面上的 JavaScript 操作将条目添加到历史
  • Lodash 和 Underscore.js 之间的差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 为什么有人会更喜欢Lodash http lodash com or 下划线 js http underscorejs org 实用程序库优于其
  • Javascript 3d 绘图实用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有什么好的 javascript 3d 绘图实用程序吗 我知道每个网站都推荐过画布 3d 图
  • 在 Jest 测试中设置时刻时区

    我有 util 函数 它以特定的日期格式解析给定的日期 即 2019 01 28 然后使用momentJS检索当天的开始并将其转换为 ISO 日期格式 dates js import moment from moment export co
  • 使用 jQuery animate 时,有没有办法隐藏 webkit 浏览器中显示的工件?

    我正在使用 jQuery animate 在网页上的项目中滑动 由于某种原因 只有在 webkit 浏览器中 元素动画的空间中才会出现伪影痕迹 有没有办法阻止或隐藏这种情况 一旦您加载此处的页面 它们就会出现在轮播上 http www my
  • 在浏览器中打开的 .mhtml 文件中填写输入

    我想对 mhtml 文件运行 e2e 测试 即填写表格 在 mhtml 文件上查看和提取数据效果非常好 但我无法填写任何内容input字段 既不是手动也不是通过木偶操作者 你可以用这个试试 mhtml 文件 https gist githu
  • 查找 JavaScript 中函数参数的数量[重复]

    这个问题在这里已经有答案了 可能的重复 获取函数的元数 https stackoverflow com questions 4848149 get a functions arity 假设我有 function a x function b
  • 如何从 WinRT StreamSocket 读取所有可用数据并清空 inputStream?

    我想在向套接字写入新数据之前读取当前正在等待套接字的所有数据 WinRT中的读取方法都是异步的 所以我不能简单地while直到套接字为空 由于我确实想丢弃套接字上的数据 因此我不想使用读取器 而是直接从套接字读取数据IInputStream
  • 从react-loadable中命名webpack块

    我已经成功在我的项目中添加了react loadable库以启用代码分割 我发现的唯一问题是webpack生成的块没有命名 它们被赋予了整数名称 我的反应可加载使用代码是 const AppRootLoadable Loadable loa
  • ES6 模板文字可以在运行时替换(或重用)吗?

    tl dr 是否可以制作可重用的模板文字 我一直在尝试使用模板文字 但我想我就是不明白 现在我感到沮丧 我的意思是 我想我明白了 但 它 不应该是它的运作方式 或者它应该如何实现 它应该变得不同 我看到的所有示例 甚至标记模板 都要求 替换
  • 允许在 Safari 上聊天应用程序使用 audio.play()

    由于苹果禁用了自动播放音频的功能HTMLMedia Element play https developer mozilla org en US docs Web API HTMLMediaElement play在没有用户交互的 java
  • Kotlin JavaScript 到 TypeScript 定义文件

    我已经找到了ts2kt 库 https github com Kotlin ts2kt这将从任意位置创建 Kotlin 头文件 d ts文件 但是 我想朝相反的方向走 我想构建一个可以编译为 JavaScript 的 Kotlin 库 但我
  • ParseFromString 在 IE 中抛出错误,但在 Chrome 中不会抛出错误

    我正在使用传单的 KML 插件 该插件在 Google Chrome 中运行良好 然而 在 IE 中 它会在以下代码中引发错误 parser new DOMParser console log url outputs path to kml
  • 如何使用 Typescript 设置 Material-UI for React?

    我在将 Material UI 添加到我的 React 项目中时遇到了一些问题 该项目是用 Typescript 编程的 根据教程 我首先添加react tab event plugin import injectTapEventPlugi
  • ReactJS setState 仅在嵌套在 setState 中时才有效

    问题 当我使用 this setState 并在回调中输出状态时 它根本不会改变 但是当我将 setstate 嵌套在 setstate 中时 它将正常工作 例子 这不行 this setState data newData 这确实有效 t
  • Javascript 最佳实践,为什么使用逗号来链接函数/变量声明?

    我一直在为 jQuery jQueryLog 开发一个插件 以允许调试链选择器和返回值 如果你想检查一下 你可以这样做here http www jquerylog com 这已经是第二个版本了 第一个版本实际上是经过编辑的 jQuery

随机推荐

  • json 字符串可以包含 HTML 标签吗?

    考虑这是我的 json 字符串 Mat id 2 Mat Name Steel Measurement mm Description Steel 我可以像这样在这个 json 字符串中添加 HTML 标签吗 Mat id 2 Mat Nam
  • 过早优化的实用规则[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 看来这句话 过早的优化 是
  • RMarkdown PDF“LaTeX3 错误:错误变量”

    我已经通过 RMarkdown 创建 PDF 报告几个月了 但是今天在新机器上安装 MikTex R 以及 rmarkdown 和 tidyverse 软件包后 我在尝试编织 PDF 时收到以下错误消息 C PROGRA 2 Pandoc
  • YouTube API v3 每次都不断请求授权

    我正在使用 YouTube api v3 来检索视频列表 示例如下 https developers google com youtube v3 code samples php retrieve my uploads 我打开页面 应用程序
  • NodeJS 原生鼠标和键盘绑定 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我一直在寻找一个支持鼠标和键盘监听和执行的原生nodejs模块 我找到了这个 https npmjs org package mouse但源代码看起
  • 在 Windows Server 2012 上注册 ASP.NET 4.5 的替代方法

    当我运行 WCF 服务时 出现 MIME 未注册错误 我用过这个link来解决这个问题 之后 我开始收到另一个错误 要求我向 IIS 注册 ASP NET 框架 所以我用了 aspnet regiis 命令 但它显示以下错误 Microso
  • D3 Crossfilter 基本示例

    我刚刚接触 D3 非常喜欢交叉过滤库 我想生成类似的东西 但我没有使用航班数据 而是采用以下格式的 CSV 数据 行 列 值 我只想要一个显示值的直方图 以及一张按值字段排序的表格 很难理解他们的例子中发生了什么 有人可以建议或展示一个非常
  • YouTube 嵌入在 Firefox 中不起作用

    我嵌入了三个 Youtube 视频 它们在除 Firefox 之外的所有浏览器中都能完美运行 尝试在服务器端清除缓存 在本地清除cookies和缓存 尝试了18台不同的计算机 尝试了Windows 7 Windows 8 Linux Ubu
  • 观察 NSMutableArray 的插入/删除

    一个类有一个类型为 NSMutableArray 的属性 和实例变量 带有合成访问器 通过 property 如果您使用以下命令观察该数组 myObj addObserver self forKeyPath theArray options
  • INNER JOIN、LEFT JOIN、RIGHT JOIN 和 FULL JOIN 有什么区别? [复制]

    这个问题在这里已经有答案了 有什么区别INNER JOIN LEFT JOIN RIGHT JOIN and FULL JOIN in MySQL SQL JOIN 子句用于组合两个或多个表中的行 基于他们之间的共同领域 SQL 中有不同类
  • 在Perl中,如何获得多个集合的笛卡尔积?

    我想用 Perl 进行排列 例如我有三个数组 big tiny small 然后我有 red yellow green 并且 apple pear banana 如何得到 big red apple big red pear etc sma
  • LZ4库解压数据上限大小估计

    我在用着LZ4库以及解压缩数据时 int LZ4 decompress safe const char source char dest int compressedSize int maxDecompressedSize 我想估计最大解压
  • 混杂模式下的数据包套接字仅接收本地流量

    我有一个创建的套接字socket PF PACKET SOCK RAW htons ETH P ALL 我使用以下方法将其设置为混杂模式 struct ifreq ifr strncpy char ifr ifr name interfac
  • 获取 will_paginate 在第一页上定义自定义偏移量

    我正在我的网站上建立一个新闻版块铁路网站它使用将分页用于分页 现在我想知道如何指定自定义偏移量对于带有 will paginate 的第一页 像这样的东西 featured news Post first news Post offset
  • 如何计算矩阵中给定值的元素数量?

    有谁知道如何计算一个值在矩阵中出现的次数 例如 如果我有一个 1500 x 1 矩阵M 向量 存储工作日 1 7 的值 我如何计算存储了多少个星期日 1 星期一 2 星期六 7 M 看一下确定并计算数组的唯一值 或者 计算出现的次数5 简单
  • HttpContext.Current.Response 和 Page.Response 有什么区别?

    我正在解决一组安全页面上的缓存问题 并意识到需要修改所有响应的标头 当我整理解决方案时 我想知道 HttpContext Current Response 和 Page Response 之间的区别以及何时应在应用程序中使用每个对象 Tha
  • 如何防止在sqlite数据库中插入重复值(如果重复则覆盖)

    我在数据库中创建了两个表 在两个表中我同时插入值 现在我想做的是 我想在第二个表中插入记录 但条件是 如果有两个相同的记录记录然后我只想插入一条记录而不是重复值 在第二个表中有两个字段 一个是id第二个是category 当用户插入两个相同
  • 如何在Windows命令脚本中使用sql*plus来控制流程?

    我正在尝试使用 sql plus 来控制一个小的 Windows 命令脚本 基本上 我想执行一些 PL SQL 可能从视图或表中选择或执行函数 它显示数据库中某些行的状态 然后根据行的状态执行一些 Windows 命令 我的问题是如何将结果
  • 使用“class”关键字声明变量与在函数签名中声明不使用“class”关键字的变量

    这两种方法有什么区别 有时 当我遇到编译时错误时 抱怨编译器无法识别 函数签名中存在一些类类型 那么如果我在各个变量前面添加关键字 class 总是可以解决此类编译时错误 例如 如果编译器无法识别类型Client in void recv
  • 如何从突变中获取新对象的ID?

    我有一个createObject突变返回新对象的 ID 返回后 我想重定向到有关新对象的详细信息页面 如何使用反应 中继从包含组件中的突变获取响应字段 E g my createObject页面包含如下代码的突变 var onFailure