2017-09-07 2 views
1

Also generell habe ich kein Problem mit Apollo reagieren und GraphQL Daten abfragen oder mutieren. Aber es gibt eine Sache, die ich nicht nur erhalten: Angenommen, ich habe eine Abfrage, die wie so eine Id einer beliebigen Einheit bekommt:Abfrage von Daten mit GraphQL in Reagieren mit Daten von einer vorherigen Abfrage

const Query = graphql(
    baseNodeQuery([ 
    'entityId', 
    'entityLabel' 
    ], 'employment_reference_preset'), { 
    options: { 
     variables: { 
     filter: { 
      type: "employment_reference_preset" 
     }, 
     limit: 1000, 
     offset: 0 
     } 
    } 
    }) 
(ExampleComponent); 

baseNodeQuery ist eine benutzerdefinierte Funktion, die einige Parameter nimmt eine Abfrage mit gql vorzubereiten(). Aber wie auch immer, in meinem ExampleComponent kann ich die Daten wie folgt verwenden:

const EmploymentReferencePresetEntity = ({data: {loading, error, nodeQuery}}) => { 
    if (loading) { 
    return <p>Loading...</p>; 
    } 
    if (error) { 
    return <p>{error.message}</p>; 
    } 

    return (
    <div> 
     //do something with the data form nodeQuery 
    </div> 
) 
}; 

Aber was ist, wenn ich will die Id ich aus meiner früheren Abfrage bekam verwenden, um eine zweite Abfrage zu erstellen und verwenden, dass Id als Filter? Wenn ich wie zuvor eine weitere graphql-Abfrage in meiner ExampleComponent zurücksende, erhalte ich den Fehler, dass ich keine gültige react-Komponente zurückgebe. Wie soll ich das machen?

Vielen Dank im Voraus!

Antwort

0

Die Art, wie ich das in der Vergangenheit machen konnte, war die Trennung der "Kind" -Abfrage in eine eigene Komponente.

Nehmen wir an, Sie haben eine Komponente des Sonnensystems, die Ihnen alle Planeten zeigt. Sie haben also eine Abfrage, um Planeten ohne Details zurückzugeben, und eine weitere Abfrage namens planetDetails oder so. Sie erstellen Ihre SolarSystem-Komponente und wickeln diese mit Ihrer Eltern-Abfrage um, dann lädt jeder Planet eine andere Komponente und übergibt die Planeten-ID als Prop zu dieser Komponente. Auf dieser Komponente wickeln Sie die PlanetDetails-Abfrage und nehmen Sie die Prop "PlanetID" für Ihre Abfrage.

Ich weiß, es ist nicht das beste Beispiel, hoffe es hilft.

Verwandte Themen