2016-06-06 9 views
3

Teil meiner Route festgelegt ist, wie so nach oben:Sub Route fragt Fehler für reagieren-Router-Relais

<Route path=":widgetId" component={Widget} queries={{ 
    viewer:() => Relay.QL`query { viewer }`, 
    widget:() => Relay.QL`query { widget(widgetId: $widgetId) }` 
}}> 
    <Route 
     path="details" 
     component={Details} 
     queries={{ widget:() => Relay.QL`query { widget(widgetId: $widgetId) }` }} 
    /> 
</Route> 

Allerdings bekomme ich folgende Fehlermeldung:

Error: Invariant Violation: Relay(Details).getFragment(): `viewer` is not a valid fragment name. Available fragments names: `widget``. 

Ist die Abfragen für die Routen :widgetId gültig? Wenn ich den Viewer von der Route der obersten Ebene entferne, funktioniert alles.

EDIT: hier ist das führt Fragment:

export default Relay.createContainer(Details, { 
    fragments: { 
     widget:() => Relay.QL` 
      fragment on Widget { 
       id, 
      } 
     ` 
    } 
}); 

Edit: hier sind die Widget-Fragmente:

export default Relay.createContainer(Details, { 
    fragments: { 
     widget:() => Relay.QL` 
      fragment on Widget { 
       id, 
      } 
     ` 
     viewer:() => Relay.QL` 
      fragment on Viewer { 
       id, 
      } 
     ` 
    } 
}); 

Hinweis: Ich bin mit isomorph-Relay-Router

+0

Haben Sie das Fragment 'viewer' in Ihrem' Widget' Relay Container definiert? –

+0

@AhmadFerdous Ja, der Fragment-Viewer ist in meinem Widget-Relay-Container. Wenn ich die Route mit Pfaddetails lösche, bekomme ich den Fehler nicht. Also glaube ich, dass der Fehler von der Einrichtung der Abfragen herrührt? – jouerai

+0

'Invariante Verletzung: Relay (Details) .getFragment()' <== scheint das Problem mit der 'Details' Komponente zu sein. Können Sie 'Fragmente' des Relay-Containers' Details' hinzufügen? –

Antwort

0

Es sieht So müssen Sie beispielsweise ein Viewer-Fragment zu Ihrer Widget-Klasse hinzufügen:

export default Relay.createContainer(Widget, { 
    fragments: { 
    widget:() => Relay.QL` 
     fragment on Widget { 
     id, 
     } 
    `, 
    viewer:() => Relay.QL` 
     fragment on ObjectType { 
     fields 
     } 
    ` 
    } 
}); 
+0

Hey @Jamie S, wenn du dir die Kommentare oben anschaust, siehst du, dass ich das Viewer-Fragment in meiner Widget-Klasse habe. Der Fehler deutet auch darauf hin, dass "Viewer" kein gültiger Fragmentname in der Detailklasse – jouerai

+0

ist. Ich habe einen Fehler in meiner Antwort gemacht, was ich auch in Ihrer aktualisierten Frage bemerkt habe. Nicht sicher, ob es sich um einen Copy-Paste-Fehler handelt, aber im Widget-Code, den Sie mit der Klasse Details verwenden. Ansonsten kann ich kein Problem in dem von Ihnen geposteten Code sehen. Es ist fast identisch mit der Einrichtung meiner Routen mit react-router-relay –