将变量传递给现代中继中的片段容器

2023-11-25

我在用着现代接力(兼容)。我有一个片段,其中包含一个具有一个参数的字段,但我找不到一种从父组件传递变量值的方法:

// MyFragmentComponent.jsx

class MyFragmentComponent extends Component {...}

const fragments = {
  employee: graphql`
    fragment MyFragmentComponent_employee on Employee {
      hoursWorked(includeOvertime: $includeOvertime)
      dob
      fullName
      id
    }
  `,
}

export default Relay.createFragmentContainer(MyFragmentComponent, fragments)

它最终会说$includeOvertime没有定义。渲染该组件的上下文如下所示:

// MyRootComponent.jsx

class MyRootComponent extends Component {
  render() {
    const { employee } = this.props
    const includeOvertime = //... value is available here

    return (
      <div>
        <MyFragmentComponent employee={employee} />
      </div>
    )
  }
}

const query = graphql`
  query MyRootComponentQuery($employeeId: String!) {
    employee(id: $employeeId) {
      fullName
      ...MyFragmentComponent_employee
    }
  }
`

export default MyUtils.createQueryRenderer(MyRootComponent, query) // this just returns a QueryRenderer

使用经典中继,您可以这样传递变量:

....
employee(id: $employeeId) {
  fullName
  ${MyFragmentComponent.getFragment('employee', variables)}
}

我怎样才能用现代继电器达到同样的效果?


Using @argumentDefinitions and @arguments指令似乎是要走的路。在 1.4.0 之前的中继版本中graphql.experimental必须使用而不是graphql.

在片段定义中:

const fragments = {
  employee: graphql`
    fragment MyFragmentComponent_employee on Employee
    @argumentDefinitions(includeOvertime: { type: "Boolean", defaultValue: false }) {
      hoursWorked(includeOvertime: $includeOvertime)
      dob
      fullName
      id
    }
  `,
}

如果您希望参数是必需的:

@argumentDefinitions(includeOvertime: { type: "Boolean!" })

在父组件中,您应该为片段指定参数,如下所示:

const query = graphql`
  query MyRootComponentQuery($employeeId: String!, $includeOvertime: Boolean) {
    employee(id: $employeeId) {
      fullName
      ...MyFragmentComponent_employee @arguments(includeOvertime: $includeOvertime)
    }
  }
`

In 这一页在官方中继文档中,有一个用于定义/传递参数的指令示例。

UPDATE:

自中继版本1.4.0 graphql.experimental已弃用,现在常规版本支持所有功能graphql tag.

UPDATE:

中继中版本1.5.0 graphql.experimental去掉了。

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

将变量传递给现代中继中的片段容器 的相关文章

  • 在克隆 GitHub 存储库之前如何查看其大小?

    在决定克隆 Git 存储库之前 有没有办法查看 GitHub 上的 Git 存储库有多大 这似乎是一个非常明显 基本的统计数据 但我根本找不到如何在 GitHub 上查看它 有一种方法可以通过以下方式访问此信息GitHub API Synt

随机推荐

  • 如何将 pandas 中的对象转换为日期

    我有如下的熊猫专栏 January 2014 February 2014 我想将其转换为以下格式 201401 201402 我正在做以下 df date pd to datetime df date format Y B 但是 它给了我一
  • 通过哈希码从内存中获取对象

    我的问题与 JVM 的安全级别有关 如何通过证明哈希码从内存中获取对象 今天我在想 我在执行环境One中创建了一个A类的对象 并从此处获取该对象的哈希码 现在 在另一个执行环境中 我想通过提供哈希码来取回 A 类对象 我认为这是可能的 因为
  • 您可以根据查询创建意图过滤器吗?

    我想让我的应用程序响应我的应用程序的市场链接 所以链接是 market details id my package name 现在我想要这个的原因是这样我可以发送一个链接 如果安装了该应用程序 该链接将打开该应用程序 如果未安装该应用程序
  • 在您的源文件中未检测到实用程序类,请仔细检查“内容”

    我正在尝试设置 Tailwind 3 但我收到了下一个警告 No utility classes were detected in your source files If this is unexpected double check t
  • 如何使WPF程序匹配当前选择的Windows主题

    我想让我的 WPF 应用程序从当前选定的系统主题中绘制 为了说明这一点 这里是我希望完成的 Windows 窗体版本 此 Windows 窗体窗口有一个基本菜单条和一个具有特定主题的工具条 如果用户选择更改主题 其外观将会改变 此外 在 W
  • NullReferenceException 没有给出变量名称是否有原因?

    The ArgumentNullException has a ParamName属性来指示哪个参数作为 null 传递 为什么NullReferenceException没有类似的财产吗 在技 术上可以在 Net 中实现吗 A NullR
  • CSS3渐变背景

    从下到上将浅灰色到白色的渐变背景应用于身体 这样正确吗 body background webkit gradient linear bottom top from e7e7e7 to ffffff DEMO支持所有有能力的浏览器 body
  • 从表行传递多个具有相同名称的请求参数

    我有一个带有复选框的表 用户可以检查并删除表中的该行 我一切正常 但如果用户选中两个框 它只会检索表格上的第一个框 tr td td tr
  • 使用整数映射 Pandas Dataframe 中的字符串值

    在熊猫中DataFrame如何将一列中的字符串与整数映射 我有大约 500 根弦DataFrame并需要将它们替换为以 1 开头的整数 Sample DataFrame Request count 547 GET online WebRes
  • 适用于 MP3、AAC、WAV 的跨平台 (C/C++) 音频库

    我正在尝试找到一个跨平台音频库 该库将具有以下功能 按重要性排序 完整的 Windows Mac Linux 支持 C C API 免费 便宜但具有商业可行性 MP3 支持 AAC 支持 WMA 支持 FLAC 支持 奥格支持 ARM Li
  • SOLR 搜索提供商的 Sitecore 8.1 索引重建策略

    只是通读了下面的索引更新策略文档 但无法得到关于哪种策略最适合 SOLR 搜索实现的明确答案 https doc sitecore net sitecore experience platform search and indexing i
  • f# 中多路树的折叠/递归

    我正在尝试将布莱恩的折叠改编为二叉树 http lorgonblog wordpress com 2008 04 06 catamorphisms part two 申请多路树 布莱恩博客的总结 数据结构 type Tree lt a gt
  • 如何使用python获取隐藏输入的值?

    如何从html页面获取输入值 like
  • 通过主屏幕替换技术了解 Android 上的自定义锁定实现

    我一直在研究这个问题很多 我问相关的本周的问题 该领域最有帮助和最相关的链接是this and this 我想了解它是如何工作的 如果作为主屏幕替换应用程序实现的话 快速提问 如果实施 应将哪个屏幕设置为默认屏幕 我们的主屏幕替换还是原始主
  • 多维数组求和 C#

    如何从多维数组中筛选出一些值 然后计算平均选定值 因此 当我单击某个图像时 它不仅应该在鼠标指针所在的点显示深度数据 来自 Microsoft Kinect 而且还应该计算环境中的值 多维数组 这是我的代码 protected void i
  • 在组织模式下使用 babel 捕获 shell 命令的输出

    我想了解我的网络硬件 lspci grep i net 从终端 此命令给出以下输出 00 19 0 以太网控制器 Intel Corporation 82577LM 千兆位网络连接 修订版 06 02 00 0 网络控制器 Intel Co
  • 忽略整个文件夹中的特定 flake8-docstrings 错误

    有没有办法忽略指定目录中发生的错误 例如 我有D103 Missing docstring in public function错误 在每个文件里面 foo目录 我想忽略该错误 是否可以设置这样的设置setup cfg file 从 Fla
  • 如何安装ROracle包?

    我正在尝试使用安装 ROracle 包install packages ROracle 但每次我收到这条消息 Package which is only available in source form and may need compi
  • 如何检查对象是否已存在于列表中

    我有一个清单 List
  • 将变量传递给现代中继中的片段容器

    我在用着现代接力 兼容 我有一个片段 其中包含一个具有一个参数的字段 但我找不到一种从父组件传递变量值的方法 MyFragmentComponent jsx class MyFragmentComponent extends Compone