Supposons que j'ai un composant appelé MyComponent
.
Utiliser MyComponent
comme ceci fonctionne :
render() {
return <MyComponent />;
}
mais stocker MyComponent
dans une variable puis essayer de l'utiliser ne fait pas :
render() {
var anAlias = MyComponent;
return <anAlias />;
}
Il en résulte l'erreur suivante :
error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.
Au lieu d'utiliser TSX, utilisez React.createElement
:
render() {
var anAlias = MyComponent;
return React.createElement(anAlias);
}
anAlias
est un élément JSX intrinsèque puisqu'il commence par une lettre minuscule . Les éléments intrinsèques sont recherchés sur l'interface JSX.IntrinsicElements et dans votre cas, il n'a probablement pas de membre anAlias
. Essayez de le mettre en majuscule afin qu'il soit traité comme un élément basé sur la valeur .
Vlad l'a couvert - c'est le même comportement que vous verriez avec le transformateur JSX standard (les identifiants en minuscules sont traités de la même manière que div
ou span
)
Merci. Je n'étais pas au courant de la distinction entre éléments intrinsèques et éléments de valeur et je ne savais pas que la casse de la première lettre était significative.
Commentaire le plus utile
anAlias
est un élément JSX intrinsèque puisqu'il commence par une lettre minuscule . Les éléments intrinsèques sont recherchés sur l'interface JSX.IntrinsicElements et dans votre cas, il n'a probablement pas de membreanAlias
. Essayez de le mettre en majuscule afin qu'il soit traité comme un élément basé sur la valeur .