Graphql 对多个字段使用@include指令

Graphql 对多个字段使用@include指令,graphql,relayjs,Graphql,Relayjs,我有一个中继容器,它使用@include(if:$variable)有条件地获取一些字段,但我必须为每个字段编写指令: const relayOptions = { initialVariables: { expandDetails: false, }, fragments: { company: Relay.QL` fragment on Company { id name employees @inclu

我有一个中继容器,它使用
@include(if:$variable)
有条件地获取一些字段,但我必须为每个字段编写指令:

const relayOptions = {
  initialVariables: {
    expandDetails: false,
  },
  fragments: {
    company: Relay.QL`
      fragment on Company {
        id
        name
        employees @include(if: $expandDetails) {
          fullName
        }
        admins @include(if: $expandDetails) {
          fullName
        }
        departments @include(if: $expandDetails) {
          name
        }
      }
    `,
  },
}
是否有任何方法可以只编写一次指令,例如类似这样的内容(我知道这段代码不起作用):

我尝试了一些其他疯狂的方法,但没有一种有效,我得到了这个错误:

“@include”无法应用于片段定义(允许:字段、片段排列、内联片段)

编辑:注意:我需要这样做以避免不必要地获取数据。我只想在显示数据的可折叠组件被扩展时(计划在安装组件后使用
setVariables
执行此操作)获取数据。
在本例中,只有3个条件字段,但在实际情况中,我试图解决的问题远远不止这些。

您可以将指令放在内联片段上,只需使用与外部字段相同的类型:

fragment on Company {
  ... on Company @include(if: $expandDetails) {
    employees { fullName }
    admins { fullName }
    departments { fullName }
  }
}

您可以将指令放在内联片段上,只需使用与外部字段相同的类型:

fragment on Company {
  ... on Company @include(if: $expandDetails) {
    employees { fullName }
    admins { fullName }
    departments { fullName }
  }
}