我尝试执行依赖于来自其他中继查询的数据的中继查询
假设它在/job/{jobID}
阵营
render() {
const job = this.props.job
return(
<h1>{job.name}</h1>
<TasksOutstanding
project={job.project}
from={job.startDate}
to={job.finishDate} />
)
}
继电器
fragments: {
job: () => Relay.QL`
fragment on Job {
name
startDate
finishDate
project {
${TasksOutstanding.getFragment('project')}
}
}
`,
所以我需要将startDate和finishDate放入片段,例如${TasksOutstanding.getFragment('project',{from, to})}
但是这些值(from
to
)在初始提取时是未知的(我所有的都是jobID)
人们如何处理这个问题?如果我有startDate和finishDate值,我应该只对组件执行第二次请求吗?
答案 0 :(得分:1)
您需要使用arguments创建字段,这是GraqhQL功能,您应该可以使用您的工具对架构进行建模。
接力variables也很有用。它们将解决您在初始获取时不了解它们的问题。
因此,使用project
和from
参数声明to
字段,使用参数查询字段是为项目字段返回适当的数据。您的容器应如下所示:
initialVariables: {
from: null,
to: null
},
fragments: {
job: () => Relay.QL`
fragment on Job {
name
startDate
finishDate
project(from: $from, to: $to) {
${TasksOutstanding.getFragment('project')}
}
}
`,
}
然后在应用程序生命周期中,您可以使用setVariables到job.startDate
和job.finishDate
设置变量并获取正确的project
。