依赖于来自中继查询的数据的中继查询
Posted
技术标签:
【中文标题】依赖于来自中继查询的数据的中继查询【英文标题】:Relay query that that depends on data from a Relay query 【发布时间】:2017-06-25 08:00:46 【问题描述】:我正在尝试执行依赖于来自另一个中继查询的数据的中继查询
假设它在 /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)
人们如何处理这个问题?一旦我有了 startDate 和 finishDate 值,我是否应该只对已安装的组件执行第二个请求?
【问题讨论】:
【参考方案1】:您需要使用arguments 创建字段,这是 GraqhQL 功能,您应该能够使用您的架构建模工具来完成。
Relay 的variables 也很有用。他们将解决您在初始获取时不认识他们的问题。
所以用from
和to
参数声明project
字段,使用参数查询字段返回项目字段的适当数据。您的容器应如下所示:
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
。
【讨论】:
好的,谢谢,解决这个问题的方法是使用 setVariables 执行后续请求。这是有道理的,我只是希望有一些方法可以在一个请求中做到这一点。以上是关于依赖于来自中继查询的数据的中继查询的主要内容,如果未能解决你的问题,请参考以下文章