【发布时间】:2017-11-20 07:30:56
【问题描述】:
我有一个中继容器,它使用@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
}
}
`,
},
}
有什么方法可以让我只编写一次指令,例如像这样(我知道这段代码行不通):
const relayOptions = {
initialVariables: {
expandDetails: false,
},
fragments: {
company: Relay.QL`
fragment on Company {
id
name
@include(if: $expandDetails) {
employees {
fullName
}
admins {
fullName
}
departments {
name
}
}
}
`,
},
}
我尝试了一些其他疯狂的方法,但都没有奏效,我收到了这个错误:
'@include' 不能应用于片段定义(允许:字段、片段扩展、内联片段)
编辑:注意:我需要这样做以避免不必要地获取数据。我只想在显示数据的可折叠组件展开时才获取数据(计划在安装组件后使用setVariables 进行此操作)。
在此示例中,只有 3 个条件字段,但在实际情况中,我尝试解决的问题远不止这些。
【问题讨论】: