React
React
React
Conteudista
Prof. Me. Marco Antonio Sanches Anastacio
Revisão Textual
Esp. Pérola Damasceno
OBJETIVOS DA UNIDADE
• Entender o que é o React e como utilizá-lo na construção de páginas web
interativas;
Este arquivo PDF contém o mesmo conteúdo visto on-line. Sua dis-
ponibilização é para consulta off-line e possibilidade de impressão.
No entanto, recomendamos que acesse o conteúdo on-line para
melhor aproveitamento.
2
Afinal, o que é React?
É inegável o quanto o JavaScript se tornou uma linguagem fundamental para
o desenvolvimento de páginas dinâmicas e interativas quando falamos sobre
interface de usuário. Apesar de sua versatilidade, com o tempo foram sur-
gindo diversas bibliotecas e frameworks que tornaram mais eficiente e rápida
a construção de páginas web, com recursos que vão desde o gerenciamen-
to de estado e interação com APIs externas até a criação e reutilização de
componentes.
Leitura
O que é uma API? Leia mais sobre no material
a seguir.
Site
Conheça em detalhes a pesquisa do
StackOverFlow.
3
Em 2015, também na JSConf US, foi lançada a biblioteca React Native, destinada à
criação de aplicações para dispositivos móveis que se utilizam de funções nativas
das plataformas Android e iOS.
Site
O JSConf é uma organização de conferências
JavaScript de todo o mundo.
4
Primeiros passos com React
Para utilização do React em um projeto, precisamos inicialmente incluir a biblio-
teca em seu código. Isso pode ser feito de duas formas:
Esse comando fará a instalação das bibliotecas React, que é responsável pela
criação e gerenciamento de componentes, e ReactDOM, que se encarrega da ren-
derização dos componentes na página.
Leitura
O que é npm? Introdução básica para inician-
tes.
<script src=”https://unpkg.com/react/umd/react.development.js”>
</script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develop-
ment.js”></script>
5
Leitura
Para fins didáticos, nessa Unidade utilizare-
mos a segunda opção, ou seja, iremos incluir
as bibliotecas diretamente em uma página
HTML. Entretanto, caso você deseje construir
uma nova aplicação totalmente do zero em
React, visite o tutorial disponível a seguir.
Nosso primeiro exemplo será uma página simples que utilizaremos para traba-
lhar alguns dos conceitos tratados:
1.<html>
2.<head>
3. <meta charset=”UTF-8”>
4. <title>Primeiros passos com React.js</title>
5. <script src=”https://unpkg.com/react/umd/react.development.js”></
script>
6. <script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
7.</head>
8.<body>
9. <div id=”root”></div>
10. <script>
11. const root = ReactDOM.createRoot (document.querySelector(‘#root’));
12. const element = React.createElement;
13. root.render(element(‘h1’, null, ‘Olá, bem-vindo ao React!!!’));
14. </script>
15.</body>
16.</html>
6
O código pareceu um pouco confuso para você? Não se preocupe, pois, no
Quadro 1, vamos comentar cada parte dele:
Linha(s) Descrição
Componentes
Não seria exagero afirmar que os componentes são o coração e essência do
React, pois permitem o desenvolvimento mais eficiente na medida em que a in-
terface de usuário é dividida em partes que são independentes e reutilizáveis.
7
<div id=”root”></div>
<script>
const { useState, createElement } = React;
function OlaMundo(props) {
const p = React.createElement(“p”, null,
`Olá, ${props.name}!`);
return p;
}
Nesse exemplo, o componente OlaMundo é definido por uma função que utiliza
o método createElement para retornar um elemento p. A função recebe uma
propriedade (props), chamada name, e o componente usa o método useState
para definir um estado para name, que é atualizado quando passamos o nome
da pessoa para o componente quando ele for renderizado.
Perceba que nosso exemplo requer a importação das funções useState e crea-
teElement da biblioteca React, o que é feito na linha: const { useState, create-
Element } = React.
Saiba Mais
Uma boa prática para tornar nosso código mais legível é impor-
tar apenas as funcionalidades específicas que precisamos da
biblioteca do React e usá-las diretamente em nosso código, sem
precisar chamar a biblioteca toda vez.
8
Finalmente, o método render é chamado para renderização do componen-
te, passando-se o resultado da chamada createElement(OlaMundo, {name:
“Marco”}) como argumento.
Saiba Mais
O parâmetro props da função é um objeto que armazena da-
dos para uso na criação da marcação HTML. No exemplo citado,
props.name é o nome de uma pessoa! Observe, também, que
o nome de componentes segue a sintaxe PascalCase (exem-
plo: OlaMundo).
O segundo parâmetro pode ser declarado vazio {}, null ou conter regras CSS. Já o
terceiro poderá ser vazio, conter um texto, ou outro elemento HTML, resultando
em aninhamentos em tantos níveis quanto desejarmos. Veja o exemplo a seguir:
9
const elemento = React.createElement(
‘h1’,
{className : ‘titulo’},
‘Olá mundo React!’
);
Importante
Observe que o segundo parâmetro se utiliza da palavra reserva-
da className e não class para definir o atributo HTML.
10
• componentDidMount(): executado após o componente ser montado
na página. Neste ponto, deve-se executar qualquer inicialização que o
componente precise;
Observe o exemplo a seguir, que, para fins didáticos, teve seu código dividido em
dois arquivos:
ciclo_de_vida.html
<html>
<head>
<title>Exemplo Ciclo de Vida</title>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
</head>
<body>
<div id=”root”></div>
<script src=”ciclo_de_vida.js”></script>
</body>
</html>
11
ciclo_de_vida.js
12
O exemplo cria um componente chamado CicloDeVida, composto por um con-
tador e um botão que incrementa o contador a cada clique. O método render()
renderiza o contador e o botão, que possui um evento de clique, responsável por
chamar a função incrementar(). A cada clique, o estado do componente é atua-
lizado e o contador é renderizado novamente.
13
Figura 1 – Ciclo de vida React
#ParaTodosVerem: imagem do navegador Chrome da Google com fundo na cor branca. Ao lado esquerdo,
há um título com o texto “Contador: 3” e, logo abaixo, um botão cinza que contém o texto “Atualizar”. À direita,
é exibida a aba de ferramentas do desenvolvedor, com a guia “Console” selecionada com um traço na cor
azul na parte inferior. Logo abaixo, uma tabela exibe, do lado esquerdo, os estados do componente React
e, à direita, o nome da aplicação (ciclo_de_vida.js) seguida pela linha do código que está sendo executada.
Fim da descrição.
O que é o JSX?
JSX é o acrônimo de JavaScript XML, uma tecnologia criada com o objetivo de sim-
plificar a criação de elementos por meio de códigos JavaScript, muito utilizada no
desenvolvimento de interface do usuário como componentes do React.
Sua sintaxe declarativa, que permite criar um componente com uma estrutura
HTML e CSS escrita em JavaScript, proporciona o desenvolvimento de interfaces
mais intuitivas com códigos mais fáceis de ler e escrever, sem necessidade de
recorrer à concatenação de Strings ou métodos para criação de elementos dinâ-
micos em HTML.
Considere, por exemplo, uma página HTML que exiba dinamicamente um ele-
mento h1 com o texto “Hello JSX com React”. Na Figura 2, observe no código a tag
<h1>Hello JSX com React</h1>.
14
Figura 2 – Hello JSX com React
#ParaTodosVerem: imagem do navegador Chrome, da Google, com fundo na cor branca. Ao lado esquerdo,
há um título com o texto “Hello JSX com React”. À direita, é exibida a aba de ferramentas do desenvolvedor,
com a guia “Elementos”. Logo abaixo, uma seta na cor verde aponta para o elemento h1. Fim da descrição.
O código para criação de uma marcação HTML com uso de sintaxe de JavaScript
puro ficaria assim:
<div id=”root”></div>
<script>
//Código JS para criar o elemento h1
const elemento = document.createElement(“h1”);
const titulo = document.createTextNode(“Hello JSX com React”);
elemento.appendChild(titulo);
//Código JS para anexar o elemento à página
document.querySelector(“#root”).appendChild(elemento);
</script>
15
<div id=”root”></div>
<script type=”text/babel”>
//Código JSX para criar o elemento
const elemento = <h1>Hello JSX com React</h1>;
//Código React para anexar o elemento à página
ReactDOM.createRoot(document.querySelector(‘#root’)).render(ele-
mento);
</script>
Site
Acesse o código completo dos exemplos cita-
dos no repositório disponível a seguir.
Perceba que estamos substituindo três linhas de código por apenas uma! Isso
parece bastante promissor, você não acha?
Os arquivos contendo códigos JSX podem ser salvos com as extensões .js ou .jsx,
porém, para que os códigos sejam interpretados pelos navegadores, é necessá-
rio um tradutor, ou transpilador de código. O React usa o Babel para ler o conte-
údo JSX e transformá-lo em JavaScript puro.
Leitura
Saiba mais sobre o que é babel lendo o mate-
rial a seguir.
16
Observe que a sintaxe JSX permite a inserção de atributos, o que facilita o uso de
CSS para formatação dos componentes. Vejamos um exemplo completo de tudo
que vimos até agora sobre o JSX:
<html>
<head>
<meta charset=”UTF-8”>
<title>Primeiros passos com React.js</title>
<script src=”https://unpkg.com/@babel/standalone/babel.js”></script>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
<style>
.hello {
color: #c05959;
font-size: 1.5em;
text-transform: uppercase;
}
</style>
</head>
<body>
<div id=”root”></div>
<script type=”text/babel”>
function Card(props) {
const element = (
<div>
<h1 className=”hello”> JSX com React </h1>
<p>Olá mundo, {props.name}</p>
</div>
)
return element;
}
function Button(props) {
return <button
17
onClick={props.onClick}>{props.label}
</button>;
}
const root = ReactDOM.createRoot(
document.querySelector(‘#root’));
root.render(<div>
<Card name=”JSX” />
<Button label=”Clique aqui” onClick={()
=> alert(‘Clicou no botão’)} />
</div>
);
</script>
</body>
</html>
• Observe que devemos utilizar className e não class para aplicar o CSS
ao elemento h1 do HTML.
18
Antes de encerrarmos esta Unidade, no próximo exemplo vamos retomar o com-
ponente de classe do React e explorar alguns recursos que essa sintaxe oferece:
<html>
<head>
<meta charset=”UTF-8”>
<title>Primeiros passos com React.js</title>
<script src=”https://unpkg.com/@babel/standalone/babel.js”></script>
<script src=”https://unpkg.com/react/umd/react.development.js”></
script>
<script src=”https://unpkg.com/react-dom/umd/react-dom.develo-
pment.js”></script>
</head>
<body>
<div id=”root”></div>
<script type=”text/babel”>
class Carro extends React.Component {
constructor(props) {
super(props);
this.state = {
marca: “Ford”,
modelo: “Camaro”,
cor: “amarela”,
ano: 1975
};
}
render() {
return (
<div>
<h1>Meu carro JSX</h1>
<ul>
19
<li>Marca: {this.state.marca}</li>
<li>Modelo: {this.state.modelo}</li>
<li>Cor: {this.state.cor}</li>
<li>Ano: {this.state.ano}</li>
</ul>
</div>
);
}
}
Neste exemplo, criamos uma classe “Carro”, que estende a classe React.
Component. O método constructor(props) é utilizado para inicializar o estado
interno do componente (state) com as propriedades (props).
20
• Validação de sintaxe: como é compilado para JavaScript, o JSX é vali-
dado pela sintaxe do JavaScript, evitando erros comuns de digitação e
garantindo que o código esteja correto antes de ser executado;
Em Síntese
O JSX é uma extensão da sintaxe do JavaScript que permite es-
crever componentes React de forma mais expressiva, uma vez
que permite a mistura de JavaScript e HTML em um único ar-
quivo. Porém, lembre-se que o JSX precisa ser convertido em
JavaScript puro (transpilado) antes de ser executado, já que não
é uma sintaxe reconhecida pelo navegador ou pelo interpreta-
dor JavaScript padrão.
21
MATERIAL COMPLEMENTAR
Sites
W3Schools – React
https://bit.ly/3Z9MJIx
React Native
Crie aplicativos nativos para Android, iOS e muito mais usando o React.
https://bit.ly/3PgUNmb
Leituras
O que é Babeljs
Saiba mais sobre a importância do Babeljs para o JavaScript moderno.
https://bit.ly/461fzxr
REFERÊNCIAS BIBLIOGRÁFICAS
CLARK, R. et al. Introdução ao HTML5 e CSS3: a evolução da web. Rio de Janeiro: Alta
Books, 2014.
MDN WEB DOCS. Começando com React. [s.d.]. Disponível em: < h t t p s : / / d e v e l o p e r .
m o z i l l a . o r g / p t - B R / d o c s / L e a r n / T o o l s _a n d _ t e s t i n g / C l i e n t - s i d e _ J a v a S c r i p t _ f r a m e
w o r k s / R e a c t _ g e t t i n g _ s t a r t e d >. Acesso em: 01/07/2023.
STEFANOV, S. Primeiros passos com React: construindo aplicações web. São Paulo:
Novatec, 2016.