Estou brincando com a estrutura ReactJS no JSBin .
Percebi que, se o nome do meu componente começar com uma letra minúscula, ele não funcionará.
Por exemplo, o seguinte não é renderizado:
var fml = React.createClass({
render: function () {
return <a href='google.com'>Go</a>
}
});
React.render(<fml />, document.body);
Mas assim que eu substituir o fml
com Fml
ele se torna.
Existe um motivo para eu não poder começar as tags com letras minúsculas?
javascript
reactjs
shaunakde
fonte
fonte
Respostas:
No JSX, os nomes de marcas minúsculas são considerados marcas HTML. No entanto, os nomes de tags em minúsculas com um ponto (acessador de propriedade) não são.
Veja tags HTML versus componentes de reação .
<component />
compila paraReact.createElement('component')
(tag html)<Component />
compila paraReact.createElement(Component)
<obj.component />
compila paraReact.createElement(obj.component)
fonte
let component = components[compType]; <component/>
e obtendo erros sem sentido.<components[name] />
que também não funciona.Components
invés decomponents
, seu site adorável será carregado sem erros, mas sem conteúdo!@Alexandre Kirszenberg deu uma resposta muito boa, só queria acrescentar outro detalhe.
O React costumava conter uma lista de desbloqueio de nomes de elementos conhecidos como
div
etc, usados para diferenciar elementos DOM e componentes do React.Mas como manter essa lista não é tão divertida e como os componentes da Web possibilitam a criação de elementos personalizados, eles estabeleceram uma regra de que todos os componentes do React devem começar com uma letra maiúscula ou conter um ponto .
fonte
Da referência oficial do React :
Observe também que:
O que significa que é preciso usar:
const Foo = foo;
antes de usarfoo
como um elemento Component em JSX.fonte
A primeira parte de uma
JSX
tag determina o tipo do elemento React, basicamente existe uma convenção com letras maiúsculas, minúsculas e notação de pontos .Tipos de notação em
JSX
maiúsculas e pontos indicam que a tag está se referindo a um componente React, portanto, se você usar a<Foo />
compilação JSX para compilarReact.createElement(Foo)
OU
<foo.bar />
compilarReact.createElement(foo.bar)
e corresponder a um componente definido ou importado em seu arquivo JavaScript.Enquanto o tipo em minúscula indica para um componente interno como
<div>
ou<span>
e resulta em uma sequência'div'
ou'span'
transmitida paraReact.createElement('div')
.React recomenda nomear componentes com uma letra maiúscula. Se você tiver um componente que comece com uma letra minúscula, atribua-o a uma variável em maiúscula antes de usá-lo
JSX
.fonte
No JSX, as React Classes são capitalizadas para tornar o XML compatível, para que não seja confundido com uma tag HTML. Se as classes de reação não estiverem em maiúsculas, é uma tag HTML como sintaxe JSX predefinida.
fonte