ES7 führt das Konzept von static
Eigenschaften- und Methodendefinitionen ein. Zusammen mit einem ES7-fähigen Transpiler können diese in React props
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:
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:
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?
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:
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:
Tags und Links javascript inheritance reactjs static ecmascript-7