Eu tento escrever um componente React. para tags de cabeçalho html (h1, h2, h3, etc ...), em que a prioridade do cabeçalho muda dinamicamente com base na prioridade que definimos nos adereços.
Aqui o que eu tento fazer.
<h{this.props.priority}>Hello</h{this.props.priority}>
resultado esperado:
<h1>Hello</h1>
Isto não está a funcionar. Existe algum método possível para fazer isso?
Respostas:
Não há como fazer isso no local, basta colocá-lo em uma variável ( com a primeira letra maiúscula ):
fonte
React.createClass
eu prefiro assim. Obrigado.<CustomTag foo="bar">
var foo = { bar: CustomTag }; return <foo.bar />
funciona bem.Para
React.createElement
garantir a integridade, se você quiser usar um nome dinâmico, também poderá ligar diretamente em vez de usar JSX:Isso evita a necessidade de criar uma nova variável ou componente.
Com adereços:
Dos documentos :
fonte
Se você estiver usando o TypeScript, verá um erro como este:
O TypeScript não sabe que
CustomTag
é um nome de marca HTML válido e gera um erro inútil.Para consertar, use
CustomTag
comokeyof JSX.IntrinsicElements
!fonte
Types of property 'crossOrigin' are incompatible. Type 'string | undefined' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'. Type 'string' is not assignable to type '"" | "anonymous" | "use-credentials" | undefined'.
Todas as outras respostas estão funcionando bem, mas gostaria de acrescentar algumas extras, pois, ao fazer isso:
O componente Título:
Que você pode usar como
ou você pode ter um conceito abstrato diferente, por exemplo, pode definir adereços de tamanho como:
Que você pode usar como
fonte
No caso de títulos dinâmicos (h1, h2 ...) , um componente pode retornar
React.createElement
(mencionado acima por Felix ) assim.Para composição, adereços e filhos são aprovados.
Consultar exemplo
fonte