Überschreiben / erweitern Sie statische Eigenschaften für ES7-Klassen in React.js

8

ES7 führt das Konzept von static Eigenschaften- und Methodendefinitionen ein. Zusammen mit einem ES7-fähigen Transpiler können diese in React , um Validatoren und Standardwerte für props anzugeben, wie folgt:

%Vor%

Das ist super praktisch, wird aber schwierig, wenn Unterklassen ins Spiel kommen. Angenommen, das folgende Modul wird zur gleichen Codebasis hinzugefügt wie ComponentOne oben:

%Vor%

Ich möchte, dass ComponentTwo die Eigenschaften-Validatoren und Standardwerte der Oberklasse ComponentOne "erbt". Stattdessen überschreiben propTypes und defaultProps auf ComponentTwo diejenigen auf ComponentOne und React die auf ComponentOne definierten Zeichen.

Da super eine Referenz auf den Prototyp der aktuellen Klasse ist und static auf Werte verweisen soll, die direkt an den Prototyp hängen, dachte ich, das könnte funktionieren:

%Vor%

Dies erzeugt jedoch einen Fehler, vermutlich von Babel: Parsing error: 'super' outside of function or class .

Das funktioniert, ist aber nicht sehr portabel:

%Vor%

Gibt es andere Möglichkeiten, dies sauberer / wiederverwendbarer zu machen?

    
ericsoco 23.10.2015, 22:59
quelle

1 Antwort

0

Seltsamerweise funktioniert super für statische Methoden. Ich denke, es sollte auch für statische Eigenschaften funktionieren. Für mich ist es daher natürlicher, den Namen der Superklasse direkt zu verwenden:

%Vor%

Aber, um super zu verwenden, ist eine Problemumgehung, die ich mir vorstellen kann, eine statische Methode zu verwenden, um die Eigenschaft zu initialisieren, die leider manuell aufgerufen werden müsste:

%Vor%     
Jordão 14.12.2015 00:43
quelle