Typescript: TSX: no se puede utilizar un componente almacenado en una variable

Creado en 12 ene. 2016  ·  3Comentarios  ·  Fuente: microsoft/TypeScript

Repro

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'.

Solución alterna

En lugar de usar TSX, use React.createElement :

render() {
  var anAlias = MyComponent;
  return React.createElement(anAlias);
}
By Design

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 interfaz anAlias . Intente hacerlo en mayúsculas para que se trate como un elemento basado en valores .

Todos 3 comentarios

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.

¿Fue útil esta página
0 / 5 - 0 calificaciones