2017-02-07 8 views
1

Я пытаюсь выполнить запрос реле, которое зависит от данных от другого реле запросареле запроса, который зависит от данных от реле запроса

Если предположить, что это работает под URL как /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})}

Но эти значения (fromto) неизвестны на первоначальный выборки (все я же тогда JobId)

Как люди имея дело с этим? Должен ли я просто выполнить второй запрос на компонент, который смонтирован, когда у меня есть значения startDate и finishDate?

ответ

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 неправдоподобным.

+0

Хорошо спасибо, поэтому способ решить это - выполнить последующий запрос с помощью setVariables. Это имеет смысл, я просто надеялся, что будет какой-то способ сделать это в одном запросе. – Tim