我正在尝试执行一个中继查询,该查询依赖于另一个中继查询的数据
假设这在类似 /job/{jobID}
的 url 下运行
反应
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(
人们是如何处理这个问题的?一旦我有了开始日期和完成日期值,我应该在组件上执行第二个请求吗?
您需要创建带有参数的字段,这是 GraqhQL 功能,您应该能够使用用于建模模式的工具来完成。
继电器的变量也将很有用。它们将解决您在初始获取时不认识它们的问题。
所以声明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
。