2016-06-13 5 views
1

Müssen Komponentendaten von der übergeordneten Komponente übergeben werden? Oder ermöglicht eine Komponentenabfrage den direkten Datenfluss zur Komponente?Wie fließen Daten zu Komponenten-Renderfunktionen in Om Next?

Ich kann sehen, wie eine Abfrage deklariert, welche Daten eine Komponente benötigt. Muss eine übergeordnete Komponente die Abfrage der untergeordneten Komponente überprüfen, um herauszufinden, welche Daten an sie übergeben werden sollen? Warum haben viele der Beispiele übergeordnete Komponenten, die etwas wie (om/get-query ChildComponentClass) aufrufen?

Antwort

1

Ja. Die Root-Komponente ist speziell. Alle Daten müssen in die Root-Komponente übergeben werden. Um dies zu erreichen, wird die Abfrage Ihrer Root-Komponente aus einer Reihe von Joins bestehen. Die Abfrage jeder Komponente in Ihrer Anwendung (mit einer eindeutigen ID) muss als Join auf der Stammebene dargestellt werden. Wenn Daten in Ihre Anwendung gelangen, müssen sie in den Stammordner gelangen. Es wird von Om Next dorthin gestellt, was es aus dem App-Status Ihrer Anwendung nimmt.

In einer Om Next-Anwendung sind Ihre Komponenten zusammen als Baum zusammengesetzt. Sie sind durch ihre Abfragen miteinander verbunden, insbesondere durch Joins.

Zur Laufzeit erhalten die render Methoden jeder Komponente ihre Requisiten von den Eltern überliefert. Die Abfrage der Komponente wird Ihnen sagen, was zu erwarten ist. Diese Requisiten sind eine einfache Karte.

Die Antworten auf Ihre Fragen in der Reihenfolge sind: ja, nein, ja. Für diese dritte Instanz untersucht das übergeordnete Element die Abfrage seiner untergeordneten Komponente nicht so sehr, wie es bereits die Daten für diese Abfrage selbst als Join enthält, und übergibt die Daten an das untergeordnete Element.

Ihre letzte Frage "Warum haben viele der Beispiele Elternkomponenten, die etwas wie (om/get-query ChildComponentClass) anrufen?". Dies ist ein für das Kind aus dem Mutter beitreten, in Abfragesyntax beschrieben:

{:app/child-join (om/get-query app/ChildComponentClass)} 

Die Mächtigkeit dieser Füge wird erst zur Laufzeit bekannt: es kann 0, 1 oder viele. Wenn es eins ist, könnten Sie es als Nachschlagebeziehung beschreiben. Wenn mehr als eine als Master-Detail-Beziehung. Wenn nicht, könnte es auch sein.

Verwandte Themen