Suponha que eu tenha um componente chamado MyComponent
.
Usar MyComponent
assim funciona:
render() {
return <MyComponent />;
}
mas armazenar MyComponent
em uma variável e tentar usá-la não:
render() {
var anAlias = MyComponent;
return <anAlias />;
}
Isso resulta no seguinte erro:
error TS2339: Property 'anAlias' does not exist on type 'JSX.IntrinsicElements'.
Em vez de usar TSX, use React.createElement
:
render() {
var anAlias = MyComponent;
return React.createElement(anAlias);
}
anAlias
é um elemento JSX intrínseco, pois começa com uma letra minúscula . Os elementos intrínsecos são pesquisados na interface JSX.IntrinsicElements e, no seu caso, presumivelmente não tem o membro anAlias
. Tente torná-lo maiúsculo para que seja tratado como um elemento baseado em
Vlad cobriu - este é o mesmo comportamento que você veria com o transformador JSX regular (identificadores de minúsculas são tratados da mesma forma que div
ou span
)
Obrigado. Eu não estava ciente da distinção entre elementos intrínsecos e baseados em valores e não sabia que a caixa da primeira letra era significativa.
Comentários muito úteis
anAlias
é um elemento JSX intrínseco, pois começa com uma letra minúscula . Os elementos intrínsecos são pesquisados na interface JSX.IntrinsicElements e, no seu caso, presumivelmente não tem o membroanAlias
. Tente torná-lo maiúsculo para que seja tratado como um elemento baseado em