ReactJS - JSX
React usa JSX para modelagem em vez de JavaScript normal. Não é necessário usá-lo, no entanto, a seguir estão alguns prós que vêm com ele.
É mais rápido porque executa a otimização ao compilar o código em JavaScript.
Também é seguro para tipos e a maioria dos erros pode ser detectada durante a compilação.
Isso torna mais fácil e rápido escrever modelos, se você estiver familiarizado com HTML.
Usando JSX
JSX parece um HTML normal na maioria dos casos. Já o usamos no capítulo Configuração do ambiente. Olhe o código deApp.jsx para onde estamos voltando div.
App.jsx
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
Hello World!!!
</div>
);
}
}
export default App;
Embora seja semelhante ao HTML, há algumas coisas que precisamos ter em mente ao trabalhar com JSX.
Elementos Aninhados
Se quisermos retornar mais elementos, precisamos envolvê-lo com um elemento contêiner. Observe como estamos usandodiv como um invólucro para h1, h2 e p elementos
App.jsx
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
<h2>Content</h2>
<p>This is the content!!!</p>
</div>
);
}
}
export default App;
Atributos
Podemos usar nossos próprios atributos personalizados, além de propriedades e atributos HTML regulares. Quando queremos adicionar um atributo personalizado, precisamos usardata-prefixo. No exemplo a seguir, adicionamosdata-myattribute como um atributo de p elemento.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
<h2>Content</h2>
<p data-myattribute = "somevalue">This is the content!!!</p>
</div>
);
}
}
export default App;
Expressões JavaScript
Expressões JavaScript podem ser usadas dentro do JSX. Só precisamos envolvê-lo com chaves{}. O exemplo a seguir irá renderizar2.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>{1+1}</h1>
</div>
);
}
}
export default App;
Não podemos usar if else declarações dentro do JSX, em vez disso, podemos usar conditional (ternary)expressões. No exemplo a seguir, variáveli igual a 1 então o navegador irá renderizar true, Se mudarmos para algum outro valor, ele irá renderizar false.
import React from 'react';
class App extends React.Component {
render() {
var i = 1;
return (
<div>
<h1>{i == 1 ? 'True!' : 'False'}</h1>
</div>
);
}
}
export default App;
Estilo
React recomenda o uso de estilos embutidos. Quando queremos definir estilos embutidos, precisamos usarcamelCasesintaxe. React também anexará automaticamentepxapós o valor numérico em elementos específicos. O exemplo a seguir mostra como adicionarmyStyle inline para h1 elemento.
import React from 'react';
class App extends React.Component {
render() {
var myStyle = {
fontSize: 100,
color: '#FF0000'
}
return (
<div>
<h1 style = {myStyle}>Header</h1>
</div>
);
}
}
export default App;
Comentários
Ao escrever comentários, precisamos colocar chaves {}quando queremos escrever um comentário dentro da seção infantil de uma tag. É uma boa prática sempre usar{} ao escrever comentários, pois queremos ser consistentes ao escrever o aplicativo.
import React from 'react';
class App extends React.Component {
render() {
return (
<div>
<h1>Header</h1>
{//End of the line Comment...}
{/*Multi line comment...*/}
</div>
);
}
}
export default App;
Convenção de nomes
Tags HTML sempre usam lowercase nomes de tag, enquanto os componentes React começam com Uppercase.
Note - Você deve usar className e htmlFor como nomes de atributos XML em vez de class e for.
Isso é explicado na página oficial do React como -
Como JSX é JavaScript, identificadores como class e forsão desencorajados como nomes de atributos XML. Em vez disso, os componentes React DOM esperam nomes de propriedade DOM, comoclassName e htmlFor, respectivamente.