中继查询依赖于来自中继查询的数据

时间:2017-02-07 21:46:48

标签: relayjs

我尝试执行依赖于来自其他中继查询的数据的中继查询

假设它在/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值,我应该只对组件执行第二次请求吗?

1 个答案:

答案 0 :(得分:1)

您需要使用arguments创建字段,这是GraqhQL功能,您应该可以使用您的工具对架构进行建模。

接力variables也很有用。它们将解决您在初始获取时不了解它们的问题。

因此,使用projectfrom参数声明to字段,使用参数查询字段是为项目字段返回适当的数据。您的容器应如下所示:

initialVariables: {
   from: null,
   to: null
},

fragments: {
   job: () => Relay.QL`
     fragment on Job {
       name
       startDate
       finishDate
       project(from: $from, to: $to) {
         ${TasksOutstanding.getFragment('project')}
       }
     }
   `,
}

然后在应用程序生命周期中,您可以使用setVariablesjob.startDatejob.finishDate设置变量并获取正确的project