Índice
- Parte 1 - Introdução ao React
- Parte 2 - Elementos React
- Parte 3 - JSX
- Parte 4 - Componentes React
- Parte 5 - Props
- Parte 6 - State
- Parte 7 - Criando interfaces declarativas
- Parte 8 - Criando um pequeno projeto
Conteúdo
O que é JSX
“Então, React faz umas coisas bem legais e permite fazer um site rápido e tudo, mas não gostei de como se constrói interfaces com ele”
- Alguém, provavelmente
Quanto a isso eu tenho uma resposta! JSX!
JSX (Javascript XML) é uma forma alternativa de se escrever elementos React, usando algo que torna sua criação muito parecido com o HTML, mas é claro, com alguns benefícios.
O que você precisa para o usar
Para usar o JSX precisamos do Babel, o Babel é um compilador Javascript, ele basicamente pega o seu código javascript e o compila para algo diferente. Por exemplo ele pode pegar um código Javascript ES2015 (que tem um monte de recursos legais, mas nem todo navegador suporta) e o compila para ES5 (que não tem todos os recursos, mas roda em tudo), com o seu código funcionando do mesmo jeito.
Normalmente usamos o Babel indiretamente por meio de um bundler de código como o Webpack para projetos devido a seus inúmeros recursos, mas para aprender não precisamos dele, tudo o que precisamos é de um script do Babel que podemos usar direito de um CDN!
Nota: Caso esteja usando o Codepen que passei na parte 1, você não precisa realizar esse passo
Vamos importar o Babel e adicionar a propriedade type="text/babel"
na tag script
onde importamos o nosso app.js
:
<body>
<!-- Depois das tags de importação do React e ReactDOM -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js'></script>
<script src='app.js' type='text/babel'></script>
</body>
NOTA: para o babel standalone funcionar, é necessário você estar usando um servidor na sua página HTML, rodar localmente NÃO IRÁ FUNCIONAR! Recomendo usar o live-server ou o http-server baixados pelo Node.js.
Usando o JSX
Agora você pode escrever o JSX, veja como era o nosso código antes:
ReactDOM.render(
React.createElement('h1', null, 'Oilá'),
document.querySelector('#app')
)
E agora com o JSX:
ReactDOM.render(
<h1>Oilá</h1>,
document.querySelector('#app')
)
Bem melhor né? Então, agora isso no permite fazer coisas que antes eram bem difíceis como adicionar propriedades de maneira bem mais fácil:
ReactDOM.render(
React.createElement('h1', { className: 'titulo' }, 'Oilá'),
document.querySelector('#app')
)
Depois:
ReactDOM.render(
<h1 className='titulo'>Oilá</h1>,
document.querySelector('#app')
)
Ou ainda, colocando elementos um dentro do outro:
const titulo = React.createElement('h1', null, 'oi')
ReactDOM.render(
React.createElement('div', null, titulo),
document.querySelector('#app')
)
E depois:
ReactDOM.render(
<div>
<h1>Oilá</h1>
</div>,
document.querySelector('#app')
)
Executando código dentro do JSX
Algo muito legal do JSX é que ele lhe permite executar código dentro dele de maneira muito fácil e legal, por exemplo:
<h1>{1 + 1}</h1> // No html aparecerá 2
<h1>{Math.sqrt((3 + 3) * 42)}</h1> // No html aparecerá 15.874507866387544
<h1>{Math.pow(variavel, 2)}</h1> // Sim, pode-se usar variáveis dentro do JSX, se variavel = 3, no html aparecerá 9
<h1>{console.log("mandioca")}</h1> // No console aparecerá mandioca
<h1>{alert("mandioca")}</h1> // Aparecerá um alerta com o texto mandioca
Eventos
Outra coisa legal é que você pode facilmente executar código a partir de um evento, por exemplo:
<button onClick={() => alert("Você me clicou")}>Me clique</button>
<input onChange={(e) => console.log(e.target.value)} />
<input onPaste={() => alert("Tá colando coisa aqui né")} />
Finalizando
Antes de ir para a próxima parte, tente fazer uma interface simples com o poder do JSX!
E na próxima parte nós iremos ver como criar componentes