Angenommen, ich habe eine Komponente namens MyComponent
.
Verwenden von MyComponent
wie folgt:
render() {
return <MyComponent />;
}
aber MyComponent
in einer Variablen zu speichern und dann zu versuchen, sie zu verwenden, funktioniert nicht:
render() {
var anAlias = MyComponent;
return <anAlias />;
}
Es führt zu folgendem Fehler:
error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.
Anstatt TSX zu verwenden, verwenden Sie React.createElement
:
render() {
var anAlias = MyComponent;
return React.createElement(anAlias);
}
anAlias
ist ein intrinsisches JSX-Element, da es mit einem Kleinbuchstaben beginnt . Intrinsische Elemente werden auf der JSX.IntrinsicElements- Schnittstelle anAlias
. Versuchen Sie, es in Großbuchstaben zu schreiben, damit es als wertbasiertes Element behandelt wird .
Vlad hat es behandelt – dies ist das gleiche Verhalten, das Sie mit dem regulären JSX-Transformator sehen würden (Kleinbuchstaben werden genauso behandelt wie div
oder span
).
Vielen Dank. Mir war der Unterschied zwischen intrinsischen und wertbasierten Elementen nicht bewusst und ich wusste nicht, dass die Groß-/Kleinschreibung des ersten Buchstabens von Bedeutung war.
Hilfreichster Kommentar
anAlias
ist ein intrinsisches JSX-Element, da es mit einem Kleinbuchstaben beginnt . Intrinsische Elemente werden auf der JSX.IntrinsicElements- SchnittstelleanAlias
. Versuchen Sie, es in Großbuchstaben zu schreiben, damit es als wertbasiertes Element behandelt wird .