Was ist das React-Äquivalent einer Angular-Direktive, die nur an Attributen funktioniert?

9

Zum Beispiel könnten Sie eine Anweisung in eckiger Form haben:

%Vor%

Und implementieren Sie so:

%Vor%

Es scheint kein Äquivalent in React zu geben, das ich nach dem Lesen der meisten Dokumente und des Googles gesehen habe. Ich hatte auf etwas wie:

gehofft %Vor%

Gibt es so etwas wie das, was ich vermisst habe? Gibt es ein anderes, aber funktionell ähnliches Äquivalent? Oder vielleicht zeigt diese Frage nur, dass mir ein Teil des "Reaktionsweges" fehlt und ich sollte das niemals tun wollen. Danke!

    
ccnokes 23.05.2015, 03:22
quelle

3 Antworten

14

Es wird hilfreich sein, darüber nachzudenken, was Angular und React jeweils "hinter den Kulissen" tun.

Wenn Sie in Ihrem Angular-Beispiel <div classy/></div> schreiben, sagen Sie: "Rendern Sie ein DIV-Element und fügen Sie ihm dann die durch die classy -Direktive definierten Verhaltensweisen an."

Wenn Sie in Ihrem React-Beispiel <MyComponent classy></MyComponent> schreiben, sagen Sie: "Erstellen Sie eine Instanz von MyComponent und übergeben Sie ihr die Props { classy: true } . Der transpiler (Babel oder whathaveyou) wird es in das folgende JavaScript umwandeln:

%Vor%

Die Antwort auf Ihre Frage ist also, dass Sie <MyComponent classy></MyComponent> nicht schreiben können, weil MyComponent component nicht weiß, was Sie mit der classy prop machen sollen. In React könnten Sie stattdessen so etwas schreiben:

%Vor%

Das funktioniert, weil wir wissen, dass die React.DOM.div -Komponente (wie die meisten DOM-Komponenten) weiß, was mit der className -Stütze zu tun ist.

Seit React 0.14 können wir etwas einfacher ausgedrückt als eine "reine" zustandslose funktionale Komponente ausdrücken, d. h. eine Funktion, die Requisiten akzeptiert und das gerenderte Ergebnis zurückgibt:

%Vor%

Sie können beide Ansätze in Aktion im folgenden Ausschnitt sehen.

%Vor% %Vor% %Vor%
    
Jordan Running 23.05.2015, 20:53
quelle
4

Eine Möglichkeit, ein ähnliches Verhalten zu implementieren, ist die Verwendung von React-Klassen-Mixins

    
Alon Burg 17.11.2015 18:43
quelle
0

Ein großartiges Beispiel für eine nützliche Anweisung in eckigen ist

%Vor%

Die smoothScroll-Anweisung würde das click-Ereignis abfangen und dann window scroll oder jquery scrollTo verwenden, um alle Arten von Animationen anzuwenden.

Überall im HTML könnte man dann einfach den powered Klassennamen der Anweisung verwenden.

Diese Art von Sache ist in React nicht verfügbar. Um dies in React zu tun, müssten Sie eine spezielle Link-Komponente erstellen, die statt:

verwendet wird %Vor%     
Bo Lora 29.10.2017 02:05
quelle

Tags und Links