Supongamos que tengo un componente llamado MyComponent
.
Usar MyComponent
así funciona:
render() {
return <MyComponent />;
}
pero almacenar MyComponent
en una variable y luego intentar usarlo no:
render() {
var anAlias = MyComponent;
return <anAlias />;
}
Da como resultado el siguiente error:
error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.
En lugar de usar TSX, use React.createElement
:
render() {
var anAlias = MyComponent;
return React.createElement(anAlias);
}
anAlias
es un elemento JSX intrínseco ya que comienza con una letra minúscula . Los elementos intrínsecos se buscan en la interfaz anAlias
. Intente hacerlo en mayúsculas para que se trate como un elemento basado en valores .
Vlad lo cubrió: este es el mismo comportamiento que vería con el transformador JSX normal (los identificadores en minúsculas se tratan de la misma manera que div
o span
)
Gracias. No era consciente de la distinción entre elementos intrínsecos y basados en valores y no sabía que la carcasa de la primera letra era significativa.
Comentario más útil
anAlias
es un elemento JSX intrínseco ya que comienza con una letra minúscula . Los elementos intrínsecos se buscan en la interfazanAlias
. Intente hacerlo en mayúsculas para que se trate como un elemento basado en valores .