OM Components vs einfache Funktionen

8

Ich gehe durch dieses OM-Tutorial , aber es ist mir nicht klar, wann OM-Komponenten zu verwenden sind einfache Funktionen (insbesondere das Makro om / component).

Das Tutorial schreibt:

  

Das erste Argument ist eine Funktion, die die Anwendungszustandsdaten übernimmt   und die Unterstützung React-Komponente, hier Besitzer genannt. Diese Funktion muss   eine Om-Komponente zurückgeben - d. h. ein Modell der om / IRender-Schnittstelle,   wie om.core / component macro generiert

%Vor%

Im nächsten Abschnitt finden wir das folgende Beispiel einer Rendering-Schleife für eine Liste:

%Vor%

Hier geben wir im Grunde nur ein (virtuelles) dom zurück, das nicht in eine OM-Komponente eingebettet ist. Die Frage wäre also: Warum existiert das om / component-Makro? Das Makro hilft uns einfach, die IRender-Funktion zu vereinheitlichen, aber es scheint, dass wir auch einfache Funktionen dafür verwenden können. Ich würde OM-Komponenten, die den Lifecycle-Status haben (oder den Besitzer get-reps aufrufen müssen), neu verfassen, aber für Komponenten, die nur virtual dom erstellen müssen, würde ich eher einfache Funktionen verwenden (also brauche ich keine Build / Build- alle Funktionen um mein virtuelles Dom zu erstellen). Was fehlt mir hier? Warum ist das Makro immer noch nützlich (und ich sehe es nicht).

    
shaft 28.06.2014, 11:39
quelle

2 Antworten

9

Ich hatte dieselbe Frage letzte Woche und habe den Quellcode von Om durchforstet, um es herauszufinden.

Ich konnte keinen funktionalen Unterschied zwischen der Verwendung des Makros om/component und nicht finden. Aber vielleicht kann diese Information etwas Licht auf jemanden werfen, der mehr über React weiß.

Jede Funktion f , die an om/root (und anschließend om/build ) übergeben wurde, wird innerhalb einer Om-Komponente eines Containers platziert. Diese Om-Komponente ist nur eine Dummy-React-Komponente, die alle Lebenszyklusereignisse an das Ergebnis von f weiterleitet, wenn sie Oms Lifecycle-Protokolle implementiert (d. H. Wenn es sich um ein reify-Objekt handelt).

Wenn das Ergebnis von f kein reify-Objekt ist, das diese Protokolle implementiert, wird angenommen, dass es sich um eine React-Komponente handelt, und es wird als Wert von der render lifecycle-Funktion zurückgegeben.

(relevant: Oms Render-Funktion hier )

    
Shaun Lebron 03.07.2014, 00:10
quelle
3

Das om / component-Makro ist nur eine Abkürzung für die Kombination aus defn und retify, wenn Sie den Status

nicht übergeben müssen     
Zubair 01.07.2014 07:02
quelle

Tags und Links