No React (estrutura do Facebook), preciso renderizar um elemento de rótulo associado a uma entrada de texto usando o for
atributo padrão .
por exemplo, o seguinte JSX é usado:
<label for="test">Test</label>
<input type="text" id="test" />
No entanto, isso produz HTML sem o for
atributo necessário (e padrão) :
<label>Test</label>
<input type="text" id="test">
O que estou fazendo de errado?
label
elemento (como retornado pordocument.createElement
,document.getElementById
, etc) que você acessar a suafor
propriedade comolabel.htmlFor
.Sim, para reagir,
for
torna-sehtmlFor
class
torna-seclassName
etc.
veja a lista completa de como os atributos HTML são alterados aqui:
https://facebook.github.io/react/docs/dom-elements.html
fonte
Para React, você deve usar suas palavras-chave por definição para definir atributos html.
é usado e
é usado, pois react faz distinção entre maiúsculas e minúsculas, certifique-se de seguir pequeno e capital conforme necessário.
fonte
ambas
for
eclass
são palavras reservadas em JavaScript; é por isso que, quando se trata de atributos HTML em JSX, você precisa usar outra coisa, a equipe do React decidiu usarhtmlFor
e,className
respectivamente,fonte
for
é uma palavra reservada em JavaScript, os elementos React são usados emhtmlFor
vez disso.": Reactjs.org/docs/dom-elements.html#htmlforapenas usando reagir
htmlFor
para substituirfor
!https://facebook.github.io/react/docs/dom-elements.html#htmlfor
https://github.com/facebook/react/issues/8483
https://github.com/facebook/react/issues/1819
fonte
Isso é htmlFor em JSX e classe é className em JSX
fonte