2

For example, if I want to get a list of planets and the orbital length of them I can do this:

query Planets {
  planets {
    id
    name
    orbitalLength
  }
}

But let's say it takes a long time to calculate the orbital length and it sometimes throws an error, so I don't want to wait for those values with the first render.

@defer would be a great solution for this problem but it isn't implemented yet, but I could load them one by one and display as they arrive, but I'm not sure, how should it be done.

Maybe something similar could work (but compose won't accept a function as a parameter):

const Feeder = graphql(gql`{
  planets {
    id
    name
  }
}`)

const Feeder2 = Feeder(compose(props => (props.data.planets || []).map(planet => {
  return graphql(gql`{
    orbitalLength(idPlanet: $idPlanet)
  }`, {
    name: `orbitalLength-${planet.id}`,
    options: {
      variables: {
        idPlanet: planet.id
      }
    }
  })
})))

const FeededComponent = Feeder2(Component)

0 Answers0