如何在 GraphQL 中正确链接 useQuery 和 useMutation?

2024-02-02

我有 useQuery 和 useMutation 从react-apollo-hooks 背靠背。我希望能够使用 useQuery 的返回值作为 useMutation 的变量。目前,useQuery 的值没有及时返回给变量,导致变量未定义。

const { data, error, loading } = useQuery(GET_POSTS, { 
    variables: {
        id: props.match.params.id
    }
})
const item = props.match.params.id
const owner = data.posts[0].author.id
const variables = { item , owner, startDate, endDate }
const bookItem = useMutation(CREATE_BOOKING_MUTATION, variables)

变量data.posts[0].author.id显示未定义。如何确保返回值是及时定义的?


如何确保返回值是及时定义的?

You can simply check condition after useQuery block


UPDATE

不能有条件地调用 Hooks。

通常的建议是将条件放入useEffect:

const { data, error, loading } = useQuery(GET_POSTS, { 
  variables: {
    id: props.match.params.id
  }
})
const item = props.match.params.id

// data.posts can be undefined at start
const owner = loading ? null : data.posts[0].author.id
const variables = { item , owner, startDate, endDate }
const bookItem = useMutation(CREATE_BOOKING_MUTATION, variables)
useEffect(() => {
  if(!loading) {
    bookItem(); // called when data ready
  }
})

另外一个选择:useApolloClient:

  • useQuery加载突变所需的数据

  • const client = useApolloClient();

  • useEffect- 有条件的 (!loading or data不为空)使用client.mutate()将获取的(在查询中)数据作为变量;

自定义钩子可以通过 3 个参数来完成:(query, mutation, { mapDataToVariables })

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

如何在 GraphQL 中正确链接 useQuery 和 useMutation? 的相关文章

  • 尝试将布尔 C# 变量传递给 javascript 变量并将其设置为 true

    在我的 aspx 页面中 我将布尔变量 C 传递给需要布尔类型的 javascript 函数 但遇到了问题 但是 C 变量返回 True 而 javascript 不喜欢大写 myjavascript 如果我将 c 变量转换为字符串 那么我
  • Web 串行 API - 未捕获(承诺中)DOMException:无法打开串行端口/所需成员 baudRate 未定义

    下面的代码可以在我的 Xubuntu 机器上运行 但现在我在 Kubuntu 上 它不再工作了 它不会打开端口 Arduino IDE 工作正常 可以向开发板写入代码 并且我可以在 Chrome 中选择设备 Arduino Uno 但当我尝
  • 使用模数按字母顺序对列表进行排序

    我在获取元素列表并按字母顺序对它们进行排序方面没有任何问题 但我很难理解如何使用模数来做到这一点 更新 这是按我的方式工作的代码 但是 我更喜欢下面提供的答案的可重用性 因此接受了该答案
  • 可以使用 jQuery 或 Javascript 将图片的特定部分用作链接吗?

    我有这个想法 将图片 而不是文本 的各个部分链接到不同的页面或网站 并且我想在不实际创建不同的照片并将它们彼此靠近的情况下完成 这样看起来就像是一张完整的图片 这里有人知道如何使用 JavaScript 的变体 例如 jQuery 或纯 J
  • Javascript正则表达式用于字母字符和空格? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我需要一个
  • 除了更改标题之外,如何在 Firefox 中强制另存为对话框?

    有没有办法在 ff 中强制打开 www example com example pdf 的另存为对话框 我无法更改标题 如果您可以将文件以 Base64 格式输出到客户端 则可以使用 data uri 进行下载 location href
  • 从未用 @flow 标记的导入文件中获取类型定义

    TL DR我怎么告诉flow从未声明的导入模块导入类型定义 flow 加长版 流接缝能够从不使用流语法的文件中派生类型 请参阅示例 示例文件 flow js if Math random lt 0 5 var y hello else va
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 通过 CDN 使用 Dojo 时如何加载自定义 AMD 模块?

    我正在使用 google 的 CDN 并尝试使用他们的加载程序加载我自己的 AMD 模块 我知道我做错了什么 但我被困住了 有任何想法吗
  • Babel 7 Jest Core JS“TypeError:wks不是函数”

    将我的项目升级到 Babel 7 后 通过 Jest 运行测试会抛出以下错误 测试在 Babel 6 中运行没有任何问题 但在 Babel 7 中失败并出现以下错误 TypeError wks is not a function at Ob
  • Grails 在 javascript 内的 GSP 站点中使用 grails var

    我有一个在 GSP 文件中的 javascript 代码中使用 grails 变量值的问题 例如 我有一个会话值session getAttribute selectedValue 我想在 javascript 代码部分使用这个值 我现在的
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 为 illustrator 导出脚本以保存为 web jpg

    任何人都可以帮我为 illustrator CC2017 编写一个脚本 将文件以 JPG 格式导出到网络 旧版 然后保存文件并关闭 我有 700 个文件 每个文件有 2 个画板 单击 文件 gt 导出 gt 另存为 Web 旧版 然后右键文
  • 摆脱node-jsx

    在我的 NodeJS 应用程序的路由器中 我想渲染一个 React 应用程序 由于它没有被浏览器化 并且已反应 因此它返回unexpected token lt 构建时出错 我发现如果我require node jsx install 它不
  • 条件在反应本机生产中失败,但在开发中有效

    我创建了一个反应本机应用程序 我需要通过它进行比较 如果属实 就会执行死刑 问题是 该条件适用于 React Native 开发模式 而不适用于 React Native 生产版本 我使用 firebase 作为数据库 也使用 redux
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 如何在 pg-promise 中设置模式

    我正在搜索的文档pg 承诺 https github com vitaly t pg promise特别是在创建客户端时 但我无法找到设置连接中使用的默认架构的选项 它始终使用public架构 我该如何设置 通常 为数据库或角色设置默认架构
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win

随机推荐

  • 是否可以在标头中声明 constexpr 类并在单独的 .cpp 文件中定义它?

    我有课Dimension我在 Dimension h 文件中定义了它 就像我的所有类一样 class Dimension public constexpr Dimension noexcept constexpr Dimension int
  • 在python中部署azure函数不会安装requirements.txt中的依赖项

    我有一个简单的 python 脚本 可以按照说明部署为 azure 函数here https learn microsoft com en us azure azure functions functions reference pytho
  • 基于密钥大小的 RSA 性能

    一个不依赖于实现的理论问题 1024 位 RSA 与 4096 位 RSA 相比性能下降了多少 Thanks 根据RSA 密钥长度 http www javamex com tutorials cryptography rsa key le
  • Userena - 将 Profile 模型进一步扩展到两个不同的模型

    我想要实现的是 我想将个人资料模型进一步扩展到教师或学生 在注册表单中 我添加了一个选择字段 用户可以在其中选择他是老师还是学生 下面是我的模型结构 class Profile UserenaLanguageBaseProfile Defa
  • 如何在 SQL 中仅选择具有不同版本的文档列表中的最大版本?

    我有一个如下所示的数据库表 ID TITLE VERSION 1 file1 1 2 file2 1 3 file1 2 4 file2 2 我需要一个将返回第 3 行和第 4 行的 SQL 查询 因为它们是 file1 和 file 2
  • 即使我没有使用 MySQL,ASP.NET 也无法找到 MySQL 主机

    我正在尝试启动并运行一个简单的网页 该网页使用 TreeView 以及 SiteMapDataSource TreeView 用于列出 Web 应用程序上的链接 我的站点导航数据源是 XML 文件 Web sitemap 当我在 Web 浏
  • kafka过滤/动态主题创建

    我正在研究 kafka spark streaming 并试图实现 Reconciliation 制作人寄语 大约 5 个字段以 分隔 其中之一是 UUID 唯一标识符 例如 A B 生产者 UUID 1 E 消费者留言 大约 5 个字段以
  • 如何修复 Bootstrap 4 中意外的列顺序?

    我正在尝试制作如下所示的布局 On xs设备 我希望顺序是第一 第二 第三 我的示例代码是
  • FUNCTION 数据库名称.SHA2 不存在

    我在 godaddy 上托管我的域名 并尝试对数据库中的密码进行哈希处理 但是 它会抛出错误 MySQL said 1305 FUNCTION dbname SHA2 does not exist 这是我用来将数据插入数据库的命令 inse
  • JQuery 中的网络图/流程图[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将 TRUE/FALSE Numpy 数组转换为 OpenCV Umat for HoughLines

    我有一个 Numpy 灰度数组 我将其设置为在达到一定阈值后 该单元格的值为 1 其余为 0 我想将其输入 OpenCV 的HoughLines 函数 但它需要一个 8 位 单通道二进制源图像 我如何转换它以便它接受参数 gray np l
  • Jupyter 认证问题

    我在连接到 AWS 上的 Jupyter 笔记本实例时遇到问题 这有点超出我的掌控范围 所以任何帮助将不胜感激 ubuntu ip 172 31 20 132 export XDG RUNTIME DIR ubuntu ip 172 31
  • 在插入语句中使用强制转换

    我正在将一些原始数据从 Excel 插入到 MS SQL 2005 中的表中 其中一些数据的格式不正确 即金额列的格式为数字 12345 而我需要像 123 45 这样 所以我使用这个CAST TRANSACTION HISTORY AMO
  • Docker Nginx:在上游找不到主机

    我的 docker 应用程序在 aws EC2 实例中运行 目前我正在尝试使用 Nginx 将应用程序映射到外部 IP 地址 这是我正在运行的容器的快照 我的测试应用程序是一个相当简单的应用程序 显示静态 html 网站 我使用以下命令部署
  • VBA 编辑器自动删除行尾的空格

    当我暂停打字四分之一秒时 有没有办法说服 Excel 中的 VBA 编辑器停止自动格式化行以删除末尾的空格 我遇到了这个确切的问题 以下内容对我有用 单击 Microsoft Office 按钮 然后单击 Excel 选项 单击加载项类别
  • 如何将heroku key添加到git才能正常工作

    我用的是windows7 我已经使用创建了heroku APP heroku create loka xxxx 它将使用 git 链接为我创建一个应用程序 email protected cdn cgi l email protection
  • 如何使用 ExpressionEvaluatingRequestHandlerAdvice 移动文件

    在 ExpressionEvaluatingRequestHandlerAdvice 的手册中 它明确指出 A typical use case for this advice might be with an
  • symfony 4:如何从 RootDir 获取“/public”

    我的下面有一张图片public folder 如何在 symfony 4 中获取我的图像目录 在 symfony 3 中 它的等价物是 webPath this gt get kernel gt getRootDir web 这是一个不好的
  • MVCiteMapProvider 的资源文件

    我正在使用 MVCSiteMapProvider 为我的应用程序生成具有本地化功能的菜单 只要菜单的资源文件位于 App GlobalResources 文件夹中 我的程序就可以正常工作 当我将资源移至另一个文件夹时 出现错误提示无法找到资
  • 如何在 GraphQL 中正确链接 useQuery 和 useMutation?

    我有 useQuery 和 useMutation 从react apollo hooks 背靠背 我希望能够使用 useQuery 的返回值作为 useMutation 的变量 目前 useQuery 的值没有及时返回给变量 导致变量未定