中继查询,该查询依赖于中继查询中的数据

  • 本文关键字:查询 数据 依赖于 relayjs
  • 更新时间 :
  • 英文 :


我正在尝试执行一个中继查询,该查询依赖于另一个中继查询的数据

假设这在类似 /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字段带有fromto参数,查询字段使用参数返回项目字段的适当数据。容器应如下所示:

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.startDatejob.finishDate并获取适当的project

最新更新