0% acharam este documento útil (0 voto)
169 visualizações137 páginas

React JS

Enviado por

Juan
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
169 visualizações137 páginas

React JS

Enviado por

Juan
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

ReactJS [Link]

ReactJS
Prof. Sérgio Assunção Monteiro

Apresentação

Você vai aprender sobre os conceitos e os elementos fundamentais


para desenvolver aplicações WEB com a biblioteca ReactJS. Essas
aplicações são de altíssima qualidade no sentido de proporcionar uma
experiência de uso muito agradável para usuários de aplicações web e
aplicativos para dispositivos móveis.

Propósito

O ambiente de desenvolvimento utilizado aqui é o Windows 10. Você


deve instalar o [Link], utilizando a versão LTS, e o gerenciador de
pacotes NPM. Você vai precisar de um navegador web, como o Google
Chrome ou o Mozilla Firefox. Além disso, é ideal que você instale o
editor para os códigos-fonte Visual Studio Code (VSCode ). Os códigos

1 of 137 08/05/2024, 20:16


ReactJS [Link]

dos exemplos desenvolvidos com o VSCode estão disponíveis para


download aqui.

Objetivos

Módulo 1

Introdução e preparação do ambiente


Elaborar diferentes ambientes de desenvolvimento para o React.

Módulo 2

Conceitos básicos do ReactJS


Aplicar a sintaxe por meio da implementação de exemplos.

Módulo 3

React com requisições HTPP/Ajax & React


Hooks
Usar requisições HTTP/Ajax com o novo conceito de React Hooks.

2 of 137 08/05/2024, 20:16


ReactJS [Link]

Módulo 4

Rotas e Redux
Traçar rotas com React Router e o controle da camada de negócio
com React Redux.


Introdução
Não há dúvidas da importância das aplicações web nas nossas
vidas. Aqui, nós vamos estudar a biblioteca React do JavaScript,
mais conhecida como ReactJS. Vamos abordar alguns do
principais problemas que existiam nas aplicações web e mobile
até o desafio que seus criadores tiveram ao idealizar essa
biblioteca. Na sequência, abordaremos assuntos referentes ao
chamado “ecossistema” para desenvolver aplicações em React
por meio da explicação dos conceitos de componentes,
propriedades (props) e estado (state). Dessa forma, teremos um
ambiente bem sedimentado para desenvolvermos nossas
aplicações.

Além de todos esses pontos, também vamos realizar requisições


HTTP em APIs web e consumir dados de uma API de forma
nativa mediante a utilização de Ajax. Também vamos conhecer
uma função do React chamada de Hook para tratar os dados

3 of 137 08/05/2024, 20:16


ReactJS [Link]

recebidos e nos prevenir contra os possíveis efeitos colaterais


que as requisições assíncronas podem trazer à aplicação.

Por fim, apresentaremos os conceitos de roteamento, que é a


maneira utilizada pelo React tanto para manipular interfaces e
componentes por meio de rotas quanto para gerenciar melhor a
camada de negócio, de forma centralizada, com o React Redux.
Ao adquirir esse conhecimento, você vai aumentar as suas
chances de se destacar em um mercado que cada vez mais
demanda por profissionais nessa área.

4 of 137 08/05/2024, 20:16


ReactJS [Link]

1 - Introdução e preparação do ambiente


Ao �nal deste módulo, você será capaz de elaborar diferentes ambientes de desenvolvimento
para o React.

Elementos fundamentais do ReactJS


Neste trabalho, vamos conhecer alguns dos principais elementos do
ReactJS. Na prática, vamos desenvolver os aspectos motivacionais para
utilizarmos essa biblioteca no objetivo de criar aplicações de alta
qualidade.

Neste vídeo, apresentaremos alguns dos principais elementos do


ReactJS, como o uso de componentes, natureza declarativa e
vinculação unidirecional, além de também abordarmos a JSX.

Modelo baseado em componentes


O React é uma biblioteca JavaScript para criar interfaces de usuário.
Desenvolvida pelo Facebook, ela possui código aberto e é mantida por
uma imensa comunidade de desenvolvedores individuais, sendo
utilizada por grandes empresas, como: Netflix, Instagram, Tesla,
Walmart e Airbnb.

Comentário

A manutenção de atualizações da biblioteca facilita a manipulação do

5 of 137 08/05/2024, 20:16


ReactJS [Link]

front-end em páginas web e aplicativos móveis via React Native. O React


trabalha em um modelo que podemos chamar de composicional, ou
seja, o programador precisa enxergar seu ambiente de trabalho, o
aplicativo, a tela ou a página segmentada em diferentes pedaços, que
serão chamados de componentes.

Na imagem a seguir, observe o exemplo de um menu principal de um


aplicativo ou rodapé, um cabeçalho e até uma área de propagandas e
anúncios de uma página HTML.

Exemplo de componentes em uma página ou aplicativo.

Agora, observe o seguinte exemplo:

Componentes em uma página ou aplicativo (Twitter).

Uma forma simples de representar os componentes seria a utilização de

6 of 137 08/05/2024, 20:16


ReactJS [Link]

funções em JavaScript. Veja duas funções isoladas e uma terceira


reutilizando as anteriores.

Javascript 

Natureza declarativa
Uma característica do React é sua natureza declarativa. Além disso, o
React não é recomendado em aplicações que precisem de manutenção
ou mudanças frequentes, tornando o código com alto grau de
complexidade. Observe um código escrito em JavaScript na forma
procedural.

Javascript 

7 of 137 08/05/2024, 20:16


ReactJS [Link]

Na programação declarativa, existe um alto nível de abstração. Um


exemplo seria a linguagem SQL, na qual, em uma consulta a um banco
de dados, o resultado esperado é declarado sem se preocupar com o
resultado em si. Em JavaScript, diferentes funções facilitam esse
processo, por exemplo, percorrer uma lista, tornando o código mais
limpo, previsível e simples de depurar. A título de ilustração, vejamos, a
seguir, o trecho do mesmo código escrito anteriormente no formato
declarativo.

Javascript 

Vinculação unidirecional
O React segue uma forma de fluxo de dados unidirecional também
conhecido como vinculação unidirecional. Em geral, esse conceito
significa que os dados possuem uma e apenas uma maneira de serem
passados para outra parte da sua aplicação.

Comentário

O fluxo de dados unidirecional geralmente obedece à forma de um


componente pai para o seu componente filho. Com isso, o filho
consegue apenas ler dados do pai sem permitir uma alteração dessa
informação no componente pai.

8 of 137 08/05/2024, 20:16


ReactJS [Link]

Os dados armazenados no componente pai são chamados de estado


(states); o valor passado para o componente filho, de propriedades
(props). Caso o filho precise atualizar alguma informação no pai, serão
utilizados ações ou eventos, por exemplo, ao clicar em um botão.
Confira!

Fluxo de dados unidirecional.

Agora, vamos resumir o fluxo de dados unidirecional. Vamos lá!

Dados sempre de cima para


baixo.

Ações ou eventos no sentido de


baixo para cima.

9 of 137 08/05/2024, 20:16


ReactJS [Link]

As propriedades (props) são


passadas apenas de pais para
filhos e não podem ser alteradas.

O estado (state) mantém o


estado interno de cada
componente e pode ser alterado
pelos filhos.

JSX é obrigatório?
A JSX é uma extensão de sintaxe JavaScript cujo emprego não é
obrigatório na codificação. No entanto, a maioria dos programadores
acha prática sua utilização em trabalhos com uma interface dentro do
código JavaScript, permitindo ao React mostrar mensagens mais úteis
de aviso e erro.

Um exemplo de como o JSX facilita nossa codificação pode ser visto no


código adiante. Entretanto, observe primeiramente um código sem a
utilização de JSX.

Javascript 

10 of 137 08/05/2024, 20:16


ReactJS [Link]

Agora, vamos ver o mesmo código reescrito com JSX!

Javascript

O JSX consegue produzir elementos do React que aumentam a


facilidade de manipularmos interfaces. Somado à facilidade de escrita e
compreensão (basicamente, HTML e JavaScript), assim como ao
entendimento dos conceitos de componentes, propriedades e estados, o

11 of 137 08/05/2024, 20:16


ReactJS [Link]

entendimento dos conceitos de componentes, propriedades e estados, o


tempo para se dominar a biblioteca se torna bem curto.

Por fim, graças ao Virtual DOM, o React consegue realizar atualizações


muito mais rápidas que a execução dessas mudanças no DOM real.
Essa otimização o torna muito mais eficiente, evitando problemas
relacionados à complexidade dos processos pelos quais as páginas
reais geralmente são atualizadas.

DOM
O document object model (DOM) é uma interface multiplataforma e
independente de linguagem, que trata um documento XML ou HTML como
uma estrutura de árvore na qual cada nó é um objeto que representa uma
parte do documento.

Atividade 1
A biblioteca JavaScript usada para criação de interface de usuário,
React, tem como uma de suas principais características a natureza
declarativa. Analise os exemplos a seguir em relação à programação
declarativa.

I. HTML
II. XML
III. PHP

Está correto, em relação à programação declarativa, o que se afirma em:

12 of 137 08/05/2024, 20:16


ReactJS [Link]

A I, II e III.

B I e III.

C II e III.

D Somente I.

E I e II.

Parabéns! A alternativa E está correta.

A linguagem declarativa é baseada no aspecto lógico e funcional: ela


descreve o que se faz, e não exatamente como suas instruções
funcionam. Já a linguagem procedural é focada na mudança de estado
de variáveis, o que acontece em PHP.

Ambiente para testes


Aqui, vamos conhecer alguns ambientes onde poderemos testar as
nossas aplicações facilmente. Isso é extremamente útil na prática, pois
otimiza o nosso tempo de desenvolvimento e a demonstração de
resultados parciais para os usuários do sistema.

13 of 137 08/05/2024, 20:16


ReactJS [Link]

resultados parciais para os usuários do sistema.

Para iniciarmos nossos estudos em React, vamos compartilhar duas


ferramentas de edição on-line para testar nossos códigos!

CodePen 

Interface mais simples e algumas limitações na licença gratuita


disponível. Ele, por exemplo, não permite a criação de arquivos
separados para importar e exportar nossos componentes.

CodeSandBox 

Ferramenta muito parecida com a CodePen, a grande diferença


do CodeSandBox é sua capacidade, mesmo com plano gratuito,
de permitir ao usuário criar uma estrutura de pastas e arquivos e,
com isso, manipular seus componentes. Além disso, já possui
templates para React integrados, não sendo necessário
adicionar scripts externos.

Ambas são poderosas ferramentas, possuindo suas peculiaridades. As


duas requerem a criação de uma conta para o melhor aproveitamento,
permitindo salvar o progresso de seus códigos. Por conta disso, vamos
detalhar como criar projetos com ambas as ferramentas.

Os dois ambientes são boas opções. No nosso caso, escrevemos e


disponibilizamos a maior parte do nosso conteúdo no CodePen. Ao
longo deste estudo, iniciaremos a configuração do Visual Studio Code
com os códigos-fonte dos exemplos aqui publicados.

Neste vídeo, apresentaremos alguns ambientes de testes que são muito

14 of 137 08/05/2024, 20:16


ReactJS [Link]

Neste vídeo, apresentaremos alguns ambientes de testes que são muito


úteis na prática, a fim de identificarmos algum problema e termos uma
noção mais clara se, de fato, o desenvolvimento do sistema está
caminhando para atender às necessidades dos usuários do sistema.

Roteiro de prática
Vejamos o passo a passo para usar o CodePen!

Inicialmente, configuraremos nosso ambiente clicando em Start Coding.

Página inicial do CodePen.

Agora, acesse o painel de configurações clicando em Settings.

Acessando painel de configuração.

Na aba JS (1), selecione, em JavaScript Preprocessor, a opção Babel (2).


Em seguida, em Add External Scripts/Pens, adicione os links externos
respectivamente representados pelos números (3) e (4) e confirme
clicando em Close (5), como a imagem seguinte apresenta.

15 of 137 08/05/2024, 20:16


ReactJS [Link]

Acessando painel de configuração.

A partir de agora, temos um ambiente para testar nossos códigos em


React.

Agora, observe um passo a passo de como deixar esse ambiente


CodeSandBox pronto para nosso conteúdo!

Primeiro, clique em Create Sandbox.

16 of 137 08/05/2024, 20:16


ReactJS [Link]

Página inicial do CodeSandBox.

Em seguida, escolha o template React.

Escolhendo nosso ambiente desejado: React.

Nosso ambiente já foi criado! Diferentemente do CodePen, aqui temos:

(1)

Painel de estrutura de arquivos.

(2)

Dependências utilizadas que


podem ser alteradas de acordo
com a necessidade de alguma
versão específica.

(3)

Links externos como um

17 of 137 08/05/2024, 20:16


ReactJS [Link]

repositório e a utilização de
Google Fonts.

(4)

Painel de edição do arquivo


selecionado.

(5)

Área do resultado final, um


navegador que exibirá nosso
código compilado.

Verifique a imagem seguinte para observar mais detalhes.

Ambiente CodeSandbox.

18 of 137  08/05/2024, 20:16


ReactJS [Link]


Faça você mesmo!
Considere o ambiente de desenvolvimento on-line [Link] que
vimos anteriormente. Agora, observe a seguinte saída:

Resultado da execução do codesandbox.

Agora, escreva um código que gere exatamente esse resultado no


[Link].

Digite sua resposta aqui

Chave de resposta

Ferramentas para desenvolvimento


19 of 137 08/05/2024, 20:16
ReactJS [Link]

Ferramentas para desenvolvimento


Os ambientes de testes são muito úteis para identificarmos erros e,
rapidamente, realizarmos ajustes, além de se apresentarem como uma
forma interessante de envolver os usuários finais com o
desenvolvimento do sistema. No entanto, para trabalharmos em uma
versão robusta, precisamos de ferramentas com mais recursos, como
veremos agora.

Neste vídeo, apresentaremos algumas das principais ferramentas para


desenvolver aplicações robustas no ReactJS.

[Link]
Vejamos agora alguns softwares necessários para a compilação de
nossos códigos React e algumas ferramentas que aceleram a
codificação, a depuração e a análise das nossas aplicações. De início,
saiba que a instalação do [Link] é obrigatória, mas a da extensão de
navegador e do editor é opcional.

Seguindo a documentação na página oficial, o [Link] é um runtime


JavaScript de código aberto e projetado para o desenvolvimento de
aplicações escaláveis de rede. O nosso intuito é explicar como se deve
instalar a versão para o nosso ambiente de desenvolvimento. Veja!

20 of 137 08/05/2024, 20:16


ReactJS [Link]

Página oficial do [Link] para realizar o download.

Atenção: Lembre-se de sempre baixar a versão LTS, como mostrado na


imagem a seguir!

Download concluído.

Vamos prosseguir agora com a instalação, atentando para as opções


selecionadas nestas imagens:

21 of 137 08/05/2024, 20:16


ReactJS [Link]

selecionadas nestas imagens:

Tela de instalação do [Link].

Escolha do local de instalação do [Link].

22 of 137 08/05/2024, 20:16


ReactJS [Link]

Tela de configuração do cliente.

Confirme as instalações de ferramentas necessárias.

23 of 137 08/05/2024, 20:16


ReactJS [Link]

Instalação do [Link] concluída.

Depois de concluir a instalação, abra um prompt de comando e digite:


node. Se tudo funcionar corretamente, será exibida a versão do
“[Link]”, que foi instalada no seu sistema operacional, como visto a
seguir.

Prompt de comando confirmando instalação do [Link].

Para continuar a configuração, siga a sequência:

24 of 137 08/05/2024, 20:16


ReactJS [Link]

Tela de instalação do [Link] confirmando a instalação da versão 16.14.2.

Extensão no navegador (opcional)


Algumas ferramentas podem ser de grande ajuda no desenvolvimento
de nosso material: uma delas é a extensão React Devtools, disponível
para Google Chrome e Mozilla Firefox. Não pretendemos detalhar o seu
uso, mas, ainda assim, sugerimos a leitura de sua documentação para
um melhor entendimento do assunto.

O React Devtools permite ao programador inspecionar uma árvore de


componentes React no navegador, verificando as propriedades (props) e
o estado (state) de seus componentes. Para isso, instale a extensão no
Google Chrome via Chrome Web Store (ou no Mozilla Firefox por meio
do Firefox Browser Add-ons), conforme podemos ver nas imagens
seguintes.

Instalando a extensão React Developer Tools no Google


Chrome.

25 of 137 08/05/2024, 20:16


ReactJS [Link]

Instalando a extensão React Developer Tools no Mozilla


Firefox.

Logo que a instalação for concluída, atualize a página. Caso o ícone


fique azul, isso significa que se trata de uma página criada com React.
Observe!

Extensão React Developer Tools instalada no Google Chrome.

Editor Visual Studio Code


O Visual Studio Code é um editor gratuito de códigos desenvolvido pela
Microsoft e possui versões para Windows, Linux e MacOS. Atualmente,
ele suporta quase todas as principais linguagens, como: HTML, C# e
Rubi.

Vamos utilizá-lo neste material, mas fique à vontade para usar qualquer
outro editor de sua preferência! Faremos agora um breve passo a passo
de sua instalação.

26 of 137 08/05/2024, 20:16


ReactJS [Link]

Download na página oficial do VSCode.

Download concluído (versão Windows).

27 of 137 08/05/2024, 20:16


ReactJS [Link]

Depois de baixar o arquivo, basta fazer a instalação no padrão “Next-


Next”. A versão final do Visual Code é dada conforme a seguir.

Tela Inicial do VSCode.

Atividade 2
O React é uma biblioteca do JavaScript muito útil no desenvolvimento
de aplicações. Vimos que, para desenvolver uma aplicação na máquina
local, precisamos instalar o [Link]. Nesse sentido, assinale a
alternativa correta que descreve o que é o [Link].

A É a linguagem JavaScript.

28 of 137 08/05/2024, 20:16


ReactJS [Link]

B É a biblioteca React do JavaScript.

C É um ambiente de desenvolvimento (IDE).

É um conjunto de componentes que podem ser


D
utilizados nas aplicações React.

É um ambiente em tempo de execução que permite


E desenvolver aplicações JavaScript sem a necessidade
de um navegador.

Parabéns! A alternativa E está correta.

De fato, o [Link] é essencial para o desenvolvimento de aplicações


JavaScript sem a necessidade de utilizar o navegador WEB. Além disso,
ele oferece a possibilidade de instalarmos recursos bastantes úteis para
criar aplicações mais sofisticadas.

Primeiro App React


Agora, estamos preparados para desenvolver o nosso primeiro
aplicativo no React. Apesar de ser bem simples, ele vai ser uma

29 of 137 08/05/2024, 20:16


ReactJS [Link]

importante referência para os projetos mais avançados que faremos


adiante.

Neste vídeo, explicaremos como desenvolver sua primeira aplicação no


React. Com o tempo, é natural que você avance no processo de
desenvolvimento, mas, neste momento, terá um projeto que servirá de
referência para os demais, auxiliando na consolidação do
conhecimento.

Create React App


Após a instalação do [Link] e de todas as dependências necessárias
para iniciar o desenvolvimento de nossos projetos, vamos criar nossa
primeira tela com o React. Para isso, utilizaremos uma ferramenta que
facilitará a estrutura inicial do projeto, configurando nosso ambiente
com funções mais recentes do JavaScript e otimizando nosso aplicativo
para produção.

Criaremos uma pasta para organizar nossos aplicativos React e, ao abrir


nosso terminal, no modo administrador, executar o comando:

npx create-react-app my-app

Em seguida, você deve confirmar todo o processo:

30 of 137 08/05/2024, 20:16


ReactJS [Link]

Instalando o pacote create-react-app e criando nosso primeiro projeto React.

Veja, na sequência, as instruções apresentadas:

Após a instalação concluída, vamos seguir as instruções.

Para iniciar nosso servidor React, digite o seguinte comando:

npm start

Entenda melhor:

Informações sobre a tabela. Imagem: Executando npm start.

31 of 137 08/05/2024, 20:16


ReactJS [Link]

Informações sobre a tabela. Imagem: Executando npm start.

Para as configurações anteriores, temos o seguinte resultado:

Compilação concluída.

Na próxima imagem, temos a primeira execução de uma aplicação


React. Confira!

Nossa primeira aplicação React em execução.

Se você conseguiu chegar até aqui sem erros, parabéns! Caso tenha tido
algum problema, revise os itens anteriores e verifique se o processo de
instalação apresentou alguma falha, refazendo todo o procedimento de
acordo com o que mencionamos.

32 of 137 08/05/2024, 20:16


ReactJS [Link]

Atividade 3
Para criarmos uma aplicação local do React, tivemos que digitar o
comando:

npx create-react-app my-app

Nesse sentido, assinale a alternativa correta que explique o que faz o


comando npx.

É uma versão mais simples do React para desenvolver


A
aplicações mais rápidas.

É um ambiente de desenvolvimento visual para criar


B
aplicações no React.

C É o programa responsável por compilar o JavaScript.

É um programa que pode executar pacotes ou


D
executáveis que estão na pasta node_modules.

E É uma outra forma de fazer referência ao [Link].

Parabéns! A alternativa D está correta.

33 of 137 08/05/2024, 20:16


ReactJS [Link]

O “npx” é um uma ferramenta que faz parte do [Link]. Quando


instalamos o [Link], também instalamos o npx. O objetivo dele é
executar os arquivos executáveis na pasta node-modules de uma
aplicação ou um pacote específico.

2 - Conceitos básicos do ReactJS


Ao �nal deste módulo, você será capaz de aplicar a sintaxe por meio da implementação de
exemplos.

Hello, world!
O exemplo “Hello, world!” é clássico para o aprendizado de qualquer
linguagem de programação, uso de bibliotecas ou de ferramentas

34 of 137 08/05/2024, 20:16


ReactJS [Link]

computacionais de um modo geral. O mesmo ocorre com o React.


Faremos um exemplo desse tipo e, assim, vamos nos familiarizar
melhor com a biblioteca.

Neste vídeo, explicaremos como implementar o programa Hello, world!


no React. Esse é um passo fundamental para entender como a
biblioteca funciona e, assim, criar as bases para o desenvolvimento de
aplicações mais complexas.

Elementos básicos do primeiro APP


Neste estudo, abordaremos os principais conceitos básicos para se
criar o famoso Hello, world!. Também é importante aprendermos a
utilizar binds a fim de manipular eventos, listas, chaves e alguns
exemplos de formulários.

Utilizando nosso ambiente de testes visto anteriormente, teste o código


e veja o resultado. Acesse o código on-line no site [Link]
ou utilize o QR Code em seu celular (localizado no canto inferior direito)
para acompanhar.

35 of 137 08/05/2024, 20:16


ReactJS [Link]

Hello, world!

Temos aqui nosso primeiro método React, o render(), que possui a


seguinte sintaxe:

[Link](element, container[, callback]);

Sua função é renderizar um elemento do React no DOM, no contêiner


passado por parâmetro, e retornar uma referência ao componente,
podendo haver um retorno nulo caso o componente não possua estado.
A atualização no DOM passa por um processo de comparação,
refletindo o elemento do React mais recente.

Comentário

Se a callback opcional for fornecida, ela será executada depois de o


componente ter sido renderizado ou atualizado. Esse algoritmo de
comparação é chamado de Diffing.

Trata-se da forma que os desenvolvedores do React encontraram para


resolver um problema: manipular o DOM. Uma cópia do DOM é criada
em memória (Virtual DOM) e sempre atualizada com o DOM real,
embora essa atualização passe por um processo denominado
reconciliação. Observe!

36 of 137 08/05/2024, 20:16


ReactJS [Link]

Aplicando o processo de reconciliação.

Caso os novos dados sejam iguais aos anteriores, o Virtual DOM vai
comparar as estruturas anteriores e confirmar que não houve alteração,
evitando um novo pedido de renderização no DOM do navegador. Esse
processo melhora a performance e o desempenho do navegador.
Sempre que houver uma atualização no DOM, ou seja, uma mudança na
árvore, o React precisa descobrir como realizá-la de forma mais
eficiente.

Uso do JSX
Vimos anteriormente uma prévia da utilização de JSX. Neste conteúdo,
daremos detalhes sobre suas principais características, iniciando com a
sintaxe de uma declaração de variável:

const element = <h1>Hello, world!</h1>;

Observamos como é possível tornar o código bem mais simples e fácil


de entender. Este exemplo declara duas variáveis e usa o método
render() novamente:


37 of 137 08/05/2024, 20:16
ReactJS [Link]

Javascript 

Veja agora o endereço [Link] do código on-line e a


imagem do resultado obtido.

Primeira imagem de variáveis em JSX.

Podemos usar qualquer expressão em JavaScript dentro das chaves em


JSX. Se quiséssemos usar uma expressão matemática, como o valor de
PI, por exemplo, junto a uma função que retorne um campo de outra
variável, teríamos o resultado gerado na imagem a seguir e disponível
no endereço [Link]

38 of 137 08/05/2024, 20:16


ReactJS [Link]

Segunda imagem de variáveis em JSX.

Também podemos usar JSX como expressões. Sempre depois de suas


compilações, os valores ficarão disponíveis para serem utilizados em
um laço condicional ou de repetição ([Link] Confira!

Javascript 

39 of 137 08/05/2024, 20:16


ReactJS [Link]

Veja na imagem a seguir o resultado do código apresentado.

Terceira imagem de variáveis em JSX.

Como não passamos nenhum parâmetro na função getGreeting(), a


própria função retornou com o elemento da linha 18. Mas como
podemos fazer para entrar na linha 14, isto é, na condicional verdadeira
que criamos?

É simples. Basta passar um objeto do tipo usuário nessa função com


esta sintaxe:

getGreeting({ firstName: "João", lastName: "Roberto" })

40 of 137 08/05/2024, 20:16


ReactJS [Link]

O resultado pode ser visto a seguir ([Link]

Quarta imagem de variáveis em JSX.

Por padrão, o React DOM utiliza o camelCase como convenção ao dar


nomes de propriedades em vez dos nomes de atributos do HTML; logo,
usaremos className no lugar de class e tabIndex em vez de tabindex.

Se uma tag está vazia, podemos fechá-la imediatamente, o que é


igualmente utilizado em XML:

const elemento = <img src={[Link]filUrl} />;

A tag JSX pode conter elementos filhos:

Javascript

41 of 137 08/05/2024, 20:16
ReactJS [Link]

Javascript 

Renderizando elementos
Em nossos exemplos anteriores, a marcação <div id=”root”> sempre foi
utilizada para renderizar nossos elementos. Com o que aprendemos até
agora, já sabemos que os elementos React são imutáveis, ou seja, uma
vez criados, não é possível alterar seus elementos filhos ou atributos.
Além disso, só conseguiremos atualizar a interface se criarmos um novo
elemento React e enviarmos por meio do render().

O React atualiza no DOM apenas os dados novos. Veremos isso na


prática com este código:

42 of 137 08/05/2024, 20:16


ReactJS [Link]

Exemplo de React DOM.

Inspecionando a página, vemos que a única mudança ocorre na


marcação <h2>, comprovando o que estudamos anteriormente: o React
DOM faz toda essa comparação.

Atividade 1
Considerando o React, avalie as afirmativas:

I. Um elemento descreve o que será renderizado em tela. Um


componente é uma função ou uma classe, contendo opcionalmente
parâmetros que retornam um elemento.
II. Algumas das vantagens de se utilizar o React são o aumento de
performance da aplicação devido ao uso de Virtual DOM e a capacidade
de renderização tanto no lado cliente quanto no do servidor.
III. States e props são objetos JavaScript que armazenam informações
que influenciam a exibição de um componente. Ambos são definidos
pelos próprios componentes, podendo ser repassados como
parâmetros de uma função.

Agora, aponte a alternativa correta.

A I, II e III.

B II e III.

43 of 137 08/05/2024, 20:16


ReactJS [Link]

C III.

D I e III.

E I e II.

Parabéns! A alternativa E está correta.

Apenas os states são definidos pelo próprio componente como se


fossem variáveis locais de uma função. Já as props são definidas fora
do escopo do componente, sendo repassadas como parâmetros de uma
função.

Estruturação de componentes
Podemos considerar que o componente é o coração do React. Um
componente constitui um bloco de código independente e reutilizável,
permitindo dividir toda a interface do usuário em pedaços menores, os
quais, por sua vez, aceitam entradas chamadas de props e retornam
elementos React.

O React trabalha com dois tipos de componentes: funcionais e de


classe. Vamos iniciar o nosso estudo sobre esses componentes

44 of 137 08/05/2024, 20:16


ReactJS [Link]

funcionais.

Neste vídeo, apresentaremos quais são os tipos de componentes do


React e como podemos utilizá-los na prática.

Componentes funcionais
O componente funcional basicamente é uma função JavaScript que
retorna um elemento React responsável por descrever o que será
apresentado na aplicação. Além de poder receber parâmetros,
comumente chamados de props, esse componente, por padrão, não
possui gerenciamento de estado do componente, necessitando dos
Hooks para isso.

Observe o exemplo de código de um componente funcional que recebe


props como parâmetro.

Javascript 

Componentes de classe
São classes do ES6 (JavaScript) que também retornam um elemento do
React. Veja algumas de suas funções:

45 of 137 08/05/2024, 20:16


ReactJS [Link]

React. Veja algumas de suas funções:

Gerenciam o próprio estado.

Possuem grande nível de poder


dentro da aplicação.

Herdam os chamados métodos


de ciclo de vida do React.

Lidam com partes lógicas.

Manipulam eventos por


intermédio de métodos que
podem ser chamados de
qualquer lugar do componente
ou em seus filhos.

Observe um exemplo de um componente do tipo classe que, ao final,


gera o mesmo elemento React do exemplo anterior:

Javascript 

46 of 137 08/05/2024, 20:16


ReactJS [Link]

Atividade 2
Um termo bastante comum no React é o nome componentes. No
entanto, os componentes podem ter comportamentos e estruturas
muito distintas. Nesse sentido, assinale a alternativa correta a respeito
de qual tipo de componente devemos utilizar quando o nosso objetivo é
trabalhar com generalizações de comportamentos a partir da
propriedade herança.

A Nesse caso, devemos usar componentes de classe.

É uma situação típica do uso de componentes


B
funcionais.

Uma vez que o objetivo do React é desenvolver


C
aplicações visuais, devemos usar componentes gráficos.

47 of 137 08/05/2024, 20:16


ReactJS [Link]

Essencialmente, uma aplicação React executa do lado


D do servidor, por isso devemos usar componentes de
serviço.

É um exemplo de como trabalharmos com componentes


E
genéricos que se adaptam para qualquer tipo de entrada.

Parabéns! A alternativa A está correta.

O cenário descrito na questão é um caso típico do uso de componentes


de classe em que temos a possibilidade de utilizar os recursos da
programação orientada a objetos, como a herança. Dessa forma,
aumentamos as chances de ter um código mais padronizado e com
menos chances de ocorrências de vulnerabilidades.

Renderização e manipulação de
componentes
Só utilizamos até agora exemplos cujas funções retornam sempre um
elemento React representando tags do DOM; porém, ao se definir uma
classe, resta a dúvida: como é feita a passagem do parâmetro?

Neste vídeo, explicaremos como é possível renderizar e manipular


componentes no React.

48 of 137 08/05/2024, 20:16


ReactJS [Link]

Renderização de componentes
Vamos usar a classe criada anteriormente (BemVindo ), definindo um
valor para o name com a seguinte sintaxe:

const element = <BemVindo name="Rodrigo"/>;

Reescrevendo nosso código em [Link] temos:

Javascript 

49 of 137 08/05/2024, 20:16


ReactJS [Link]

Para o React, a classe <BemVindo> com o atributo que foi passado


(name=”Rodrigo”) é chamada de props. Para usar esse atributo, é
preciso usar a palavra reservada “this”. Veja agora o resultado do
código!

Exemplo de atributo props.

Nossa classe do exemplo utilizou apenas um atributo ([Link]). Se


tivéssemos outros, teríamos esta sintaxe:

const element = <BemVindo name="Rodrigo" age="20" country="Brasil"/


>;

O React passaria como props o seguinte valor: {name:'Rodrigo', age:'20',


country:'Brasil'}

Em nossa classe, acessaríamos conforme o campo necessário.

50 of 137 08/05/2024, 20:16


ReactJS [Link]

Atenção!

O React DOM utiliza o camelCase na convenção dos nomes, tratando


componentes com nomes iniciados com letras minúsculas como uma
tag do DOM e aqueles iniciados com maiúsculas como componentes.
Desse modo, é necessário que ele esteja no escopo ao criarmos nosso
componente do tipo classe.

Prefira sempre escolher componentes funcionais quando precisar exibir


apenas alguma interface, já que sua construção será mais simples,
principalmente se reescrevermos essa função com arrays functions. Os
componentes de classe são mais recomendados em tarefas mais
complexas que manipulam eventos, precisam lidar com alguma lógica e
gerenciam o estado.

Manipulação de componentes
Já sabemos criar componentes, mas precisamos agora entender como
manipulá-los. Configurando uma composição de componentes, por
exemplo, uma página, teremos formulário, botões, barra de menu e
outros elementos que serão componentes em nosso projeto.

No próximo exemplo, montaremos uma página simples com cabeçalho,


coluna de navegação, coluna principal, topo e rodapé.

51 of 137 08/05/2024, 20:16


ReactJS [Link]

Estrutura de uma página.

Vamos iniciar pelo componente Header, que será um <header> com


nome de classe ‘cabecalho’, contendo ainda um <h1> de nome de classe
‘boasVindas’ com um texto “Bem-vindo” e uma props com um atributo
name. Esse componente também possui um <h2> de nome de classe
‘titulo’ com texto “Manipulando Componentes”, conforme aponta o
código seguinte.

Javascript 

Em seguida, há outro componente chamado Navegação. Trata-se de


uma <div> de nome de classe ‘navegacao’ e um texto “Barra de
Navegação”, veja:

52 of 137 08/05/2024, 20:16


ReactJS [Link]

Javascript 

Continuando, vemos que o próximo componente, cujo nome é Principal,


possui uma <div> com nome de classe ‘principal’ e uma “Coluna
Principal” como texto incluso.

Javascript 

Finalizando os componentes, de forma isolada, existe o Rodapé , um


<footer> com classe nomeada de ‘rodape’ que contém um parágrafo
com texto “Rodapé”.

Javascript 

53 of 137 08/05/2024, 20:16


ReactJS [Link]

Até aqui não houve nenhuma novidade em relação à criação desses


componentes. Mas como fazer para chamar um componente dentro do
outro? Observe a sintaxe:

Javascript 

Com mais de um componente, é preciso encapsulá-los dentro de uma


tag DOM (no exemplo, <div>) e obedecer à seguinte sintaxe:

Javascript 

Deve-se criar um componente Topo, conforme o diagrama inicial, que é


a junção dos componentes Header e Navegação. Lembre-se de que a
Header possui uma mensagem de boas-vindas com o nome do visitante
(um parâmetro, ou seja, uma props). Eis o código:

Javascript 
54 of 137 08/05/2024, 20:16
ReactJS [Link]

Já temos toda a estrutura escrita. Contudo, qual delas será utilizada


para substituir o elemento “root” em nosso ambiente de testes?

Como solução, criaremos um componente reunindo todos os


componentes criados ([Link]

Javascript 

Agora, confira a saída esperada!

55 of 137 08/05/2024, 20:16


ReactJS [Link]

Exemplo de página.

No entanto, como se consegue incluir o componente de um mesmo


nome sem acrescentar um novo nó? Podemos utilizar fragmentos, o que
nos permite agrupar uma lista de componentes sem adicionar nós
extras ao DOM. Veja a sintaxe:

Javascript 

Ou de uma forma mais simplificada:

Javascript

Verifique agora o resultado do nosso exemplo anterior com a utilização

56 of 137 08/05/2024, 20:16


ReactJS [Link]

Verifique agora o resultado do nosso exemplo anterior com a utilização


da forma simplificada de fragmentos ([Link]

Exemplo de página com fragmentos.

E inspecionando o código compilado a seguir, o que confirma a


eliminação da <div>:

Código compilado.

Sempre é recomendado dividir componentes em unidades menores,


simplificando a codificação e criando componentes reutilizáveis que
podem ser utilizados em outros aplicativos ou projetos. No início, tal
processo será demorado, mas ter esses componentes disponíveis
tornará seus futuros trabalhos mais rápidos, limpos e prontos para sua
produção.

Comentário
57 of 137 08/05/2024, 20:16
ReactJS [Link]

Comentário

É possível vermos a utilização de props passando o nome do usuário


como atributo ou carregando esse valor na classe <header> com o this.
Ao empregarmos o this, usamos o valor da props renderizado naquele
instante.

Outro importante conceito é que os componentes React agem sempre


com funções puras em relação ao seus props. Função pura é aquela que
não altera suas entradas, retornando sempre o mesmo resultado para as
mesmas entradas. Veja um exemplo de uma função pura:

Javascript 

De maneira oposta, uma função impura é aquela que altera a própria


entrada na qual o valor pode variar. Observe:

Javascript 

O problema dessa função está no valor da variável global c, que possui

58 of 137 08/05/2024, 20:16


ReactJS [Link]

um estado compartilhado e está fora do escopo da função, não havendo


previsão do seu resultado. O estado compartilhado acaba provocando
uma dependência de tempo.

Entretanto, as interfaces são dinâmicas, mudando conforme o tempo e


as ações do usuário. Mas como não ir contra essa regra de função
pura? Veremos a resposta conhecendo o conceito de estados (state) e o
ciclo de vida dos componentes.

Atividade 3
No desenvolvimento de uma aplicação do React, constantemente,
precisamos trabalhar com componentes. Inclusive, é comum utilizarmos
a estrutura:

class MinhaClasse extends [Link]

Nesse sentido, selecione a opção correta a respeito dessa estrutura


sintática.

A classe Component herda característica da biblioteca


A React que, por sua vez, amplia o comportamento da
classe “Minha classe”.

Quando uma classe herda de [Link], ela


B
pode padronizar comportamentos e propriedades.

59 of 137 08/05/2024, 20:16


ReactJS [Link]

Trata-se de uma notação funcional de componentes cujo


C objetivo é estabelecer o padrão visual dos componentes
gráficos da classe “Minha Classe”.

Trata-se do uso de uma classe especial de Interface


D
chamada de [Link]

É um exemplo típico de como podemos usar diversas


E classes simultaneamente na linguagem de programação
React.

Parabéns! A alternativa B está correta.

Logo de início, devemos nos lembrar que o React não é uma linguagem
de programação, e sim uma biblioteca do JavaScript, essa sim é uma
linguagem de programação. Sobre a notação sintática em si, o que está
ocorrendo é que a classe “MinhaClasse” está herdando as propriedades
e os comportamentos de [Link]. Isso é muito importante
para construirmos aplicações padronizadas e com as melhores práticas
de programação.

Estado e ciclo de vida dos


componentes

60 of 137 08/05/2024, 20:16


ReactJS [Link]

Como já vimos, os componentes são elementos que fazem parte da


base estrutural de uma aplicação do React. Agora, vamos estudar os
estados que eles podem assumir e o ciclo de vida que é essencial para
entendermos as engrenagens de um App React.

Neste vídeo, apresentaremos os estados que um componente React


pode assumir e quais são as fases do ciclo que passam. Isso é bastante
útil na construção das nossas soluções para obtermos melhores
desempenhos, que, para esse tipo de aplicação, é crucial.

States
Enquanto as props são parâmetros passados por funções e imutáveis,
os states são declarados e manipulados dentro dos componentes,
podendo ser editáveis. Para cada modificação no seu valor (setState),
uma nova renderização é feita. Observe!

Modificação do estado de um componente.

Como estudaremos os Hooks somente mais adiante, empregaremos


agora um componente do tipo classe para exemplificar o uso de
estados em React. Criaremos uma aplicação simples com um único
botão incrementando uma variável desse componente.

É importante observar a chamada do construtor da classe. Observe o


código:

61 of 137 08/05/2024, 20:16


ReactJS [Link]

Javascript

Sugerimos verificar isso on-line no endereço [Link] e


acompanhar o resultado, que pode ser visto na imagem a seguir.

Uso de estados em React.

Sempre que precisarmos utilizar valores que serão modificados na


renderização, essas variáveis deverão ser declaradas como atributos no
estado da classe. Vejamos outro exemplo!

Javascript 

62 of 137 08/05/2024, 20:16


ReactJS [Link]

Observe a adição de um método mudarUsuario, que tem como objetivo


alterar o estado por meio das propriedades passadas. Propositalmente,
escolhemos não alterar o sobrenome e a nacionalidade dentro do
método, demonstrando que o React faz uma mesclagem renderizando
apenas os valores que foram atualizados (nome e idade).

Outro método adicionado foi o incremento da idade em uma unidade.


Veja o resultado ([Link]

63 of 137 08/05/2024, 20:16


ReactJS [Link]

Renderização realizada pelo React.

É preciso seguir algumas recomendações ao manipular estados.


Sempre que precisássemos atualizar um estado, intuitivamente
usaríamos o seguinte:

[Link] = [Link] + 1;

Entretanto, isso não renderizará novamente nosso componente: o único


local em que podemos atribuir [Link] é no construtor. Para
atualizarmos seu valor, utilizamos sempre o setState.

Outro problema está na sincronização dos estados; afinal, o React pode


agrupar várias chamadas setStates em uma única atualização na
aplicação. Eis um exemplo de código que pode acabar retornando um
valor diferente devido à utilização de states e props:

[Link]({ numero: [Link] + [Link] });

Uma forma de corrigir seria reescrever o nosso parâmetro como uma


função que, conforme demonstra o código adiante, terá como primeiro
parâmetro o estado anterior e como segundo as propriedades.

Javascript 

64 of 137 08/05/2024, 20:16


ReactJS [Link]

Outra opção é fazer isso com uma notação com arrows functions:

Javascript

Acompanhe os endereços [Link] e [Link]


para verificar que tais recomendações foram seguidas e que os
exemplos anteriores foram reescritos da forma correta.

Ciclo de vida dos componentes


Nosso estudo sobre o ciclo de vida dos componentes pretende
descrever seus métodos e comportamentos, além de apontar quais são
os mais utilizados. Em qualquer linguagem de programação, ciclo de
vida significa o tempo em que uma aplicação, um objeto ou parte de um
código está em execução.

Esse processo sempre começa por uma inicialização, podendo sofrer


alguma alteração e terminando quando ela está “morta”. Os
componentes seguem o mesmo conceito: iniciados quando o

65 of 137 08/05/2024, 20:16


ReactJS [Link]

componente é renderizado, eles serão atualizados sempre que houver a


necessidade e finalizados ao serem removidos da tela. Entenda!

Diagrama do ciclo de vida de um componente React.

Fases do ciclo de vida

O ciclo de vida é dividido em três fases e cada uma contém métodos


que auxiliam na codificação da nossa aplicação, sendo executados no
momento já definido e apropriado para aquele componente.

Descreveremos de forma detalhada cada uma dessas fases!

Montagem 

Na primeira fase, configuramos os estados iniciais (states) e as


propriedades (props) do componente, preparando-o para sua
renderização, isto é, para que ele seja escrito efetivamente no
DOM do navegador e o que será feito após sua primeira
renderização.

Observe agora os seus métodos e, principalmente, a ordem na


qual eles são chamados quando instanciamos um componente:

• constructor()

66 of 137 08/05/2024, 20:16


ReactJS [Link]

• static getDerivedStateFromProps()

• render()

• componentDidMount()

Atualização 

Na segunda fase, o componente React já está no navegador e


aumenta conforme ele recebe atualizações. Essas atualizações
podem ocorrer por meio de novas props ou modificação do seu
estado. Observe seus métodos e a ordem em que são
chamados:

• static getDerivedStateFromProps()

• shouldComponentUpdate()

• getSnapshotBeforeUpdate()

• render()

• componentDidUpdate()

Desmontagem 

Na terceira fase, o componente não é mais necessário, sendo


removido do DOM. Ela possui apenas um único método:

• componentWillUnmount()

67 of 137 08/05/2024, 20:16


ReactJS [Link]

Atividade 4
Os componentes desempenham um papel essencial no uso de uma
aplicação com React. Eles estabelecem comportamentos e fazem uso
de propriedades que padronizam a forma de trabalhar. Nesse sentido,
selecione a opção correta a respeito do ciclo de vida dos componentes
do React.

O getSnapshotBeforeUpdate é executado logo antes de


A a renderização ser confirmada no DOM. Qualquer valor
retornado será encaminhado para o constructor.

O componentWillUnmount será usado para executar


B quaisquer solicitações de rede de saída e para criar
ouvintes de eventos associados ao componente.

O render não é considerado uma função do ciclo de vida


C
e seu uso não é obrigatório.

O componentDidMount é executado após a primeira


D renderização e no local em que todas as atualizações de
estado devem ocorrer.

Para atualizar um estado, utilizamos o método setState


E

68 of 137 08/05/2024, 20:16


ReactJS [Link]

E
dentro do método constructor.

Parabéns! A alternativa A está correta.

O getSnapshotBeforeUpdate realmente é executado logo antes de a


renderização ser confirmada no DOM, mas seu valor retornado é
encaminhado para o componentDidUpdate, sendo útil para capturar
informações do DOM, por exemplo. O ComponentWillUnmount é usado
para cancelar (em vez de criar ou executar solicitações) e destruir
ouvintes de eventos associados ao componente. O render é considerado
uma função do ciclo de vida, sendo, entre eles, o único obrigatório. O
único local onde não devemos executar uma atualização de estados é
dentro do constructor: apenas a atribuição inicial do nosso estado
precisa ser executada no método constructor.

Constructor
Trata-se de um dos principais métodos do ciclo de vida do React.
Embora sua implementação não seja obrigatória, ele é chamado antes
que o componente seja montado, sendo utilizado normalmente para a
atribuição inicial de nossos estados iniciais ([Link]).

Neste vídeo, explicaremos o que é o método especial Constructor do


React e as diversas formas como ele pode ser usado na prática de
acordo com o contexto da aplicação.

69 of 137 08/05/2024, 20:16


ReactJS [Link]

Métodos constructor (props)


Caso seu componente seja uma subclasse de component, deve-se
chamar sempre super (props) no início do código, permitindo, com isso,
a utilização de ([Link]) e evitando erros ou bugs na execução.
Normalmente, ele também é utilizado com binds de outros métodos.
Observe um trecho de código do método construtor:

Javascript 

static getDerivedStateFromProps (props, state)

Método raramente utilizado, é aplicado quando o state possui uma


dependência temporal de props.

Exemplo

70 of 137 08/05/2024, 20:16


ReactJS [Link]

Exemplo

Um componente gráfico que compare seus filhos anteriores e os


subsequentes para decidir quais devem ser animados. Mesmo assim,
uma solução melhor seria utilizar outro método mais simples, como o
componente DidUpdate.

O static getDerivedStateFromProps sempre é executado imediatamente


antes de o método render, ambos ocorrendo na montagem inicial e
sempre que haja alguma atualização. Ele admite dois parâmetros de
entrada (props e state) preenchidos automaticamente pelo React e
retorna um objeto para atualizar o state ou um null, o que indica que não
houve mudança.

render()

Trata-se do único método obrigatório em um componente do tipo


classe. Quando é chamado, ele examina [Link] e [Link],
retornando um elemento do tipo React a ser carregado pelo
componente.

Recomendação

Sempre que um componente for carregado para ser renderizado e a


qualquer momento em que houver uma atualização, esse método será
chamado. Na documentação, aconselha-se que a função render() deva
ser pura, não modificando o state, o que fará com que os componentes
sejam mais fáceis de se utilizar.

Caso precise interagir com o navegador, utilize o método


componentDidMount() ou outros métodos do ciclo de vida. Se o método
shouldComponentUpdate() retornar falso, o método render() não será
chamado.

componentDidMount()

Método chamado imediatamente após um componente ser montado, ou

71 of 137 08/05/2024, 20:16


ReactJS [Link]

Método chamado imediatamente após um componente ser montado, ou


seja, inserido na árvore DOM, sendo chamado o método render() e
ocorrendo a renderização de fato do componente. É um local ideal para
scripts que podem dificultar a renderização da página ou aplicação,
pois, com a tela já renderizada, não haverá bloqueio e travamentos
nesse processamento.

Utilize-o caso precise carregar dados de origem de alguma API externa.


Não se esqueça de liberar esse recurso em componentWillUnmount().

É possível chamar o setState() diretamente nesse método. Entretanto,


embora o estado intermediário do componente não seja visto pelo
usuário, isso adicionará uma renderização extra e tudo ocorrerá antes
de o navegador atualizar a tela, o que pode gerar uma queda de
desempenho, pois o render() foi chamado duas vezes ao final do
processo.

shouldComponentUpdate (nextProps, nextState)

Método que verifica se os valores atualizados do componente precisam


ser novamente renderizados, ajudando na performance em alguns
casos de constantes atualizações. Por padrão, retorna um valor
verdadeiro; se, ao contrário, ele retornar um falso, os métodos render() e
componentDidUpdate() não serão executados.

getSnapshotBeforeUpdate (prevProps, prevState)

Executado antes de a árvore DOM ser renderizada, ele é utilizado para


armazenar valores anteriores do estado do componente após uma
atualização do DOM. Qualquer valor retornado por ele será usado como
parâmetro no método componentDidUpdate().

componentDidUpdate (prevProps, prevState, snapshot)

Executado sempre que um estado do componente é atualizado logo


após a chamada do componentDidMount(). É um local considerado

72 of 137 08/05/2024, 20:16


ReactJS [Link]

ideal para realizar as requisições de rede enquanto as props atuais e as


anteriores são comparadas.

Dica

Quando você precisar atualizar o estado de um componente (setState),


lembre-se sempre de encapsular essa parte do código com algum bloco
condicional, evitando, assim, um loop infinito e gerando renderização
extra sem necessidade, o que afeta a performance do componente.

O último parâmetro vem do retorno do método


getSnapshotBeforeUpdate(), que só será utilizado ao implementarmos
em nosso componente; caso contrário, ele não é definido. Dificilmente,
porém, implementaríamos esse método em nosso componente. Se o
método shouldComponetUpdate() retornar falso, o
componentDidUpdate() não será executado.

componentWillUnmount()

Executado antes de o componente ser destruído, ele é chamado na fase


de desmontagem do componente. Devem ser codificados neste
método:

Toda a limpeza relacionada a


temporizadores.

Alguma dependência de
assinatura gerada no
componentDidMount().

73 of 137 08/05/2024, 20:16


ReactJS [Link]

Logout.

Tokens de autenticação que


precisam ser removidos.

Cancelamento de requisições de
rede.

Atividade 5
A classe [Link] desempenha um importante papel no
desenvolvimento de uma aplicação no React. Entre os diversos métodos
que ela possui, há o método “constructor”. Nesse sentido, selecione a
opção correta sobre o objetivo desse método.

É o único método que pode alterar o estado de um


A
componente.

É usado para agilizar a renderização dos componentes


B
visuais na tela.

74 of 137 08/05/2024, 20:16


ReactJS [Link]

Ele reduz a necessidade de realizar chamadas a outros


C métodos, uma vez que funciona como um gerenciador
do ciclo de vida da classe.

Ele elimina da memória todos os valores de variáveis


D
que não estão sendo mais utilizados pela classe.

Ele estabelece o estado inicial do componente e faz a


E
vinculação com os manipuladores de eventos.

Parabéns! A alternativa E está correta.

O método construtor é uma das bases das classes da programação


orientada a objetos. No caso da biblioteca React, o objetivo dele é fazer
a configuração inicial do componente – por meio da definição dos
valores padrões dos estados que ele pode assumir –, além disso, ele
também faz a vinculação entre os componentes e os manipuladores de
eventos.

75 of 137 08/05/2024, 20:16


ReactJS [Link]

3 - React com requisições HTPP/Ajax & React Hooks


Ao �nal deste módulo, você será capaz de usar requisições HTTP/Ajax com o novo conceito de
React Hooks.

Bind e eventos
Bind é uma ligação que permite alterar o comportamento do this de
determinado elemento. Em um evento, o this refere-se, na maioria dos
casos, ao componente que invocou esse evento. Ele facilita o trabalho
com elementos visuais por meio do uso de listas.

Neste vídeo, explicaremos o conceito de bind no React. A partir dele,


você vai ligar (bind) eventos com funcionalidades.

Bind no React
Para iniciar o nosso estudo sobre bind no React, vamos começar com a
análise de um exemplo de sua utilização em JavaScript!

76 of 137 08/05/2024, 20:16


ReactJS [Link]

Javascript 

Nesse exemplo ([Link] conseguimos criar uma função


exibirContexto que basicamente exibe o this no console (linha 2). Em
seguida, criamos um objeto Usuário com os atributos nome, idade e
nacionalidade.

Note que, se tentarmos acessar os atributos dentro da função


exibirContexto(), haverá um erro, pois eles não existem no contexto da
função. No entanto, utilizando o bind conforme a linha 12 da imagem
adiante, conseguimos acessar os atributos de usuário. Não se esqueça
de utilizar o this!

77 of 137 08/05/2024, 20:16


ReactJS [Link]

Exemplo de bind.

Em React, é possível usar o bind para substituir alguma arrow function.


Reutilizaremos agora parte de um código visto anteriormente, o que
demonstra como sua utilização facilita o entendimento na codificação.
Veja!

Javascript 

Dentro do construtor, criamos uma função bindMudarUsuario (linha 8),


fazendo o bind na função mudarUsuario (11) e passando o this como
parâmetro. Já na linha 23, passamos simplesmente como referência o
[Link] no evento onClick, o que facilita o uso das
funções, conforme aparece em [Link]

Manipulando eventos
Vamos estudar agora como o React manipula eventos. Para isso,
veremos desde como é feita a passagem de uma função para o evento

78 of 137 08/05/2024, 20:16


ReactJS [Link]

veremos desde como é feita a passagem de uma função para o evento


até de que modo é repassado um state.

Basicamente, um evento é o resultado de uma ação.


Quando o usuário clica com o botão esquerdo do
mouse ou pressiona alguma tecla, a aplicação recebe
um evento, um onClick ou um keyEvent, por exemplo.

Comparemos o mesmo evento, mostrando como ele é escrito em HTML


e como o seria em React:

<button onclick="enviarForm()">Enviar formulário</button>

Quando nosso botão (Enviar formulário) for pressionado pelo usuário, o


evento onclick será chamado e a função enviarForm(), executada. Nesse
exemplo HTML, contudo, há um problema: a manipulação de diferentes
eventos.

Os eventos em React são nomeados usando camelCase. É possível


passar uma função no lugar de uma string.

<button onClick={enviarForm}>Enviar formulário</button>

Não estamos chamando o método enviarForm(), e sim uma referência


{enviarForm}. Outra diferença: não podemos impedir o comportamento
padrão do React retornado um booleano falso. Em vez disso, devemos
chamar o preventDefault explicitamente. Por exemplo, em um HTML,
caso precisássemos evitar que uma nova página fosse aberta,
escreveríamos assim:

79 of 137 08/05/2024, 20:16


ReactJS [Link]

escreveríamos assim:

Html

Já em React, isso seria reescrito da seguinte forma:

Javascript 

Note que não utilizamos os parênteses ao chamar a função em onClick.


Caso os colocássemos, assim que a página fosse exibida, a função
seria executada sem clicar no link.

80 of 137 08/05/2024, 20:16


ReactJS [Link]

Para evitar esse comportamento, usemos o preventDefault, cancelando


o comportamento padrão do objeto. Também precisamos realizar uma
ligação com o bind. Confira!

Javascript 

O parâmetro “e” utilizado em handleClick() é um evento sintético. Isso


significa que se trata de um evento específico passado como instância e
acumulado, ou seja, o evento “e” será reutilizado algumas vezes e suas
propriedades serão anuladas após o callback do evento ser acionado e
finalizado.

Outra forma seria por meio de arrows functions que já incorporam o


bind em sua implementação, não havendo a necessidade da utilização
de eventos sintéticos. Observe novamente como podemos reescrever o
código com arrows functions.

Javascript 

81 of 137 08/05/2024, 20:16


ReactJS [Link]

O React define esses eventos de acordo com as especificações do W3C,


garantindo uma compatibilidade entre navegadores. Geralmente, não é
necessário utilizar o addEventListener para adicionar ouvintes a um
elemento no DOM depois que ele é criado. É possível somente definir
um ouvinte quando o elemento é inicialmente renderizado.

Caso precisássemos passar algum parâmetro no evento, bastaria


definirmos dentro da nossa função as entradas necessárias e, por meio
de arrows functions, repassá-las.

Javascript 

82 of 137 08/05/2024, 20:16


ReactJS [Link]

Atividade 1
O React é uma excelente biblioteca do JavaScript para desenvolvermos
aplicações com recursos de interface com usuário (UI). No entanto, há
outras formas de desenvolver aplicações semelhantes, inclusive, no
próprio HTML. Nesse sentido, selecione a opção correta que justifica o
uso do React em relação a outras linguagens e bibliotecas de
desenvolvimento.

Para trabalhar com React, basta conhecer JavaScript e


A
programação orientada a objetos.

A curva de aprendizado para desenvolver no React é


B
muito mais rápida do que no HTML.

O JavaScript torna o trabalho com React extremamente

83 of 137 08/05/2024, 20:16


ReactJS [Link]

O JavaScript torna o trabalho com React extremamente


C simples sendo necessário usar poucos recursos da
biblioteca.

O React oferece recursos para o desenvolvedor ter maior


D
controle e qualidade da aplicação.

Desenvolver uma aplicação no React é muito mais


E
simples do que trabalhar com HTML.

Parabéns! A alternativa D está correta.

O React é uma biblioteca do JavaScript com muitos recursos baseados


em componentes que possuem um ciclo de vida bem definido e na
programação orientada a objetos que oferece muitas ferramentas para
que o desenvolvedor tenha bastante controle da aplicação e, assim,
obtenha alta qualidade na manipulação dos eventos, o que a torna muito
superior ao uso do HTML, por exemplo. Isso inclusive é muito claro na
forma como o mercado possui alta empregabilidade para o
desenvolvedor de React.

Elementos Visuais
Em React, manipular listas se torna uma tarefa bem simples: de forma
idêntica à do JavaScript, pode-se usar as principais funções para auxiliar
na criação de novas listas. Com a utilização do JSX, criar elementos

84 of 137 08/05/2024, 20:16


ReactJS [Link]

na criação de novas listas. Com a utilização do JSX, criar elementos


visuais se torna rápido, mas sempre existirá a necessidade de criar uma
chave (key) em cada elemento, identificando de forma única e evitando
uma perda de performance na renderização desse elemento.

Neste vídeo, explicaremos o passo a passo para construir um formulário


no React por meio da utilização de todos os conceitos que estudamos
até agora.

Listas e chaves
Neste estudo, veremos alguns exemplos e práticas comuns na criação
de listas e suas sintaxes. No primeiro exemplo ([Link]
com o auxílio da função map, geraremos uma lista de elementos <li>
populados por um array de carros.

Javascript 

85 of 137 08/05/2024, 20:16


ReactJS [Link]

Veja a saída esperada:

Exemplo de array.

Outra forma de gerar esses elementos seria, por meio de props, passar
um array com o conteúdo desejado. Também renomearemos as
variáveis, tornando a função mais genérica para qualquer lista de
objetos passados via props. Confira!

Javascript

86 of 137 08/05/2024, 20:16


ReactJS [Link]

Veja que o resultado é o mesmo, porém, uma mensagem de aviso


aparece no console do navegador:

Mensagem no console.

Desse modo, precisamos ter uma chave para cada elemento gerado. No
exemplo a seguir, podemos modificar nossa lista, atribuindo como
chave o próprio valor do elemento. Caso não o faça, o React atribuirá os
índices como chave. O código pode ser verificado neste endereço:
[Link]

Javascript 

87 of 137 08/05/2024, 20:16


ReactJS [Link]

Na maioria das vezes, utilizamos um ID do objeto. Caso não tenhamos


um ID estável para isso, podemos usar o índice gerado na listagem. Mas
use-o como último recurso!

const listaElementos = [Link]((e, index) => <li key={index}>{e}


</li>);

É importante destacar que as chaves são únicas apenas em


componentes irmãos, não precisando sê-lo de forma global, podendo
ser as mesmas na criação de dois arrays diferentes.

Formulários
Veremos agora como o React trata elementos nos formulários,
aproveitando os estados dos componentes e facilitando a manipulação
dos dados nas funções que precisamos compartilhar entre eles.
Observe o exemplo:

Javascript

88 of 137 08/05/2024, 20:16


ReactJS [Link]

Veja, a seguir, a saída esperada!

Exemplo de formulário.

Nesse exemplo, repare que as duas funções que retornam os valores


digitados de nome e idade são idênticas, mudando apenas o campo.
Com isso, podemos utilizar uma prática comum: nomear os elementos
e, dentro do nosso estado, utilizá-los. Confira!

Javascript

Todo elemento possui um nome que podemos definir ao criarmos. No

89 of 137 08/05/2024, 20:16


ReactJS [Link]

estado, podemos utilizá-lo por meio de colchetes, tornando nosso


código bem mais simples ([Link]

Em outro exemplo, utilizaremos dois elementos com comportamentos


um pouco diferentes daqueles utilizados em HTML: TextArea e Select.
Veja!

Html 

O texto no elemento <textarea> é definido por seus filhos. No React,


utilizaremos o atributo value. Já no <select>, geralmente, é preciso
definir o elemento selecionado por padrão. No React, esse valor é
definido no elemento raiz (select), e novamente no atributo value.

Este exemplo emprega os dois elementos ([Link]

90 of 137 08/05/2024, 20:16


ReactJS [Link]

Exemplo de formulário.

Note que há um problema no carro escolhido: o texto que selecionamos


para exibir é a própria chave. Uma solução encontrada foi modificar
nossa função handleCampo, que vai verificar qual é o tipo do alvo
(target) usado. Observando a árvore do elemento, podemos retornar o
valor que precisamos e salvá-lo no estado como textoCarro. Vejamos o
resultado em [Link]

Exemplo de formulário.

Em todos esses exemplos, usamos o conceito de componentes


controlados, no qual o valor é controlado pelo React. No entanto, acaba
sendo cansativo tratar de todos os eventos e inputs.

91 of 137 08/05/2024, 20:16


ReactJS [Link]


Faça você mesmo!
Considere o seguinte trecho de código desenvolvido no [Link]:

Javascript 

O desenvolvedor esperava que fosse exibida uma lista das letras “A”, “B”,
“C”, “D” e “E”. No entanto, o programa não exibiu nenhum resultado.
Corrija o programa, para que ele funcione corretamente.

Digite sua resposta aqui

92 of 137 08/05/2024, 20:16


ReactJS [Link]

Digite sua resposta aqui

Chave de resposta

Ambiente do Visual Studio Code


A partir de agora, vamos utilizar o editor Visual Studio Code. Para isso,
vamos criar um projeto, organizar as pastas e importar e exportar
componentes, bem como utilizar uma API externa, com suas
requisições utilizando Hooks.

Neste vídeo, identificaremos os principais recursos do VS Code para


desenvolvimento de uma aplicação no React. Esse tópico é
extremamente importante, pois estamos lidando com uma das
principais IDEs (ambiente de desenvolvimento integrado) utilizadas no
mercado, o que aumenta bastante as nossas chances de
empregabilidade.

Preparação do ambiente do VS Code

93 of 137 08/05/2024, 20:16


ReactJS [Link]

Usaremos o ambiente criado anteriormente, modificando alguns


arquivos e preparando-o para podermos iniciar o nosso estudo com
requisições. Vamos escolher no Visual Studio Code e abrir a pasta do
projeto criado (my-app). Veja a estrutura dos arquivos!

Ambiente Visual Studio Code.

O script criou uma pasta node_modules na qual estão todos os módulos


necessários para a utilização do React. Na pasta public, em que está a
nossa página inicial ([Link]) que contém a <div id=”root”> sempre
utilizada em nossos exemplos, podemos remover todo seu conteúdo,
deixando apenas uma estrutura básica para exibir nosso componente e
apagando alguns arquivos que não serão usados, conforme imagem a
seguir.

94 of 137 08/05/2024, 20:16


ReactJS [Link]

Pasta public.

Dentro da pasta src fica nosso componente, que está produzindo toda a
dinâmica da logo a girar do React. O arquivo que faz esse efeito é o
[Link], que carrega um único componente, chamado de App, cuja
lógica se encontra inteiramente em outro arquivo: [Link].

Execução de uma aplicação no VS Code


Aqui, já começamos a ver uma diferença em relação aos exemplos
anteriores, pois sempre utilizávamos neles um arquivo único. Abrindo
inicialmente o [Link], veja o código!

Javascript 

Os dois primeiros imports foram utilizados para inserir tanto a logo do


React que gira na página inicial (linha 8) quanto um arquivo CSS. Na

95 of 137 08/05/2024, 20:16


ReactJS [Link]

última linha, definiremos qual função terá acesso por outro componente,
sem nos esquecermos do parâmetro default. Também removeremos os
arquivos que não vamos utilizar. Nosso componente App ficará assim:

Javascript 

No último arquivo a ser modificado, o [Link], identificamos uma


composição de componentes – nesse caso, apenas o App. Verifica-se
novamente a presença de arquivos de estilização ([Link]) e de alguns
para testes e reports, como podemos ver neste código:

Javascript

96 of 137 08/05/2024, 20:16


ReactJS [Link]

Na linha 4, podemos ver como é feita a importação de um componente


seguindo a sintaxe:

import NomeComponente from 'Nome_Arquivo_Componente';

Na linha 7, está salvo o nó da árvore DOM a ser renderizada em nosso


componente. Já na 8 ocorre a renderização. O modo restrito definido
pelo React (linha 9) serve para ativar verificações e avisos adicionais
para os componentes que serão renderizados dentro dele. Tais
verificações são executadas apenas no modo de desenvolvimento.

Removendo os arquivos e os códigos que não vamos utilizar, nossa


estrutura e nosso código final ficam da seguinte maneira:

Estrutura do APP.

Observe o código seguinte!

Javascript

97 of 137 08/05/2024, 20:16


ReactJS [Link]

E, agora, apresentamos o resultado da página:

Uma sugestão para praticar e revisar nossos exemplos: reescreva para o Visual Studio separando as
pastas por seção.

Atividade 2
O VS Code é uma ferramenta muito útil para desenvolver aplicações em
diversas linguagens de programação, incluindo aplicações JavaScript
com React. Ao abrirmos a pasta de uma aplicação, vemos diversos
arquivos e subpastas. Nesse sentido, selecione a opção correta a
respeito do arquivo responsável por registrar as dependências de uma
aplicação no [Link].

A É o arquivo src.

As dependências estão registradas no arquivo

98 of 137 08/05/2024, 20:16


ReactJS [Link]

As dependências estão registradas no arquivo


B
[Link].

Todas as dependências ficam registradas na pasta raiz


C
da aplicação do React.

Podemos encontrar as dependências nos arquivos da


D
pasta public.

O arquivo .gitignore mantém a lista de todas as


E
dependências que uma aplicação React precisa.

Parabéns! A alternativa B está correta.

O arquivo “[Link]” é responsável por registrar todas as


dependências utilizadas por uma aplicação React. Essas dependências
são instaladas por meio do programa npm.

Hooks
Antes de ver como são feitas as requisições HTTP em React,
precisamos estudar uma nova função responsável por oferecer uma
dinâmica diferente, facilitando bastante a manipulação de estados em
nossos componentes sem modificar suas hierarquias: o Hooks. Ele

99 of 137 08/05/2024, 20:16


ReactJS [Link]

permite a quebra do nosso componente em funções menores,


mantendo seus relacionamentos sem a necessidade de utilizar os
métodos de ciclo de vida. Vamos agora conhecer alguns dos principais
Hooks utilizados, o useState e o useEffect.

Neste vídeo, explicaremos como identificar os principais aspectos do


Hooks e como ele agiliza o desenvolvimento de uma aplicação no
React.

Função useState
Quando utilizamos uma classe, definimos no construtor o estado com
[Link] com alguns atributos. Para atualizá-los, usamos dentro da
classe o [Link], passando os valores dos atributos que
gostaríamos de modificar. O React renderiza nosso componente apenas
nos pontos em que eles foram atualizados.

useState é uma função que retorna um par de valores.


O primeiro é o valor atual. Já o segundo se trata de
uma função que, idêntica ao setState, é utilizada para
atualizar, mas sem se mesclar com o antigo valor.

Além de sua sintaxe, observe a seguir como o conceito de


desestruturação de arrays facilita a atribuição dessas variáveis!

Javascript 

100 of 137 08/05/2024, 20:16


ReactJS [Link]

Por convenção, utilizamos sempre um nome para a variável e a função


para modificá-la com set na frente. É possível usar variáveis ou um array
como parâmetro no useState. Para utilizarmos as variáveis, repetiremos
as tags jsx sem a necessidade de utilizar o this. Vamos demonstrar
mais um exemplo de useState, incrementando uma variável ao
pressionar um botão!

Javascript 

101 of 137 08/05/2024, 20:16


ReactJS [Link]

Demonstramos aqui as três formas de utilizar o setValor. Use a notação


com a qual esteja mais familiarizado, como função ou arrow function.

Função useEffect
Esta é outra função muito utilizada e que serve para executar efeitos
colaterais em nossos componentes funcionais. Isso pode parecer
confuso, mas já usamos tal conceito nos componentes de classe.
Combinados, os métodos componetDidMount, componentDidUpdate e
componetWillUmont definem o useEffect.

Comentário

A grande vantagem da utilização do useEffect é que, diferentemente dos


métodos que cuidam das atualizações dos componentes de classe,
esses efeitos não bloqueiam o navegador ao efetivarem a atualização
da tela, pois a maior parte deles não precisa ocorrer de forma síncrona.

No uso do useEffect, vimos que são gerados efeitos colaterais: alguns


deles não precisam de limpeza; outros, sim. Os efeitos sem limpeza não
retornam nada na função. Já aqueles que precisam dela retornam uma
função que será executada no momento que aquele componente for
desmontado. Veja sua sintaxe:

Javascript 

102 of 137 08/05/2024, 20:16


ReactJS [Link]

A função que for passada como primeiro parâmetro será executada


quando ocorrer alguma atualização em sua dependência.

Exemplo

Se, na função passada, tivermos uma variável contador, quando essa


variável for modificada, nosso efeito colateral será executado. Caso seja
definido um retorno nesse efeito colateral, ela será chamada quando
essa variável de dependência for destruída.

O segundo parâmetro é um vetor dessas dependências. Quando ele está


em branco, o React entende que todas as variáveis utilizadas na função
estão sendo monitoradas. Caso se queira excluir alguma, aí sim será
preciso explicitar cada uma delas nesse vetor. Segue um exemplo do
uso dessa função:

Javascript

Ao se clicar no botão somar, percebe-se uma demora na atualização do


título da página. Isso ocorre pelo fato de o React esperar a renderização
de toda a tela finalizar para assim executar a função definida dentro do
useEffect, conforme apresentado na imagem a seguir.

103 of 137 08/05/2024, 20:16


ReactJS [Link]

Resultado da execução do código.

Em [Link], modificamos o código para que, após cinco segundos, seja


possível remover todos os componentes da tela e ver o retorno da nossa
função ser executada.

Javascript 

104 of 137 08/05/2024, 20:16


ReactJS [Link]

Se incluirmos o segundo parâmetro da função com um vetor vazio, o


nosso título não será atualizado ao clicar em somar.

Javascript 

Veja, a seguir, a saída esperada!

Resultado ao aplicar useEffect.

Atividade 3
O Hooks surgiu no React para permitir a utilização dos estados e de
outros recursos sem a necessidade de criar classes. Analise as
afirmativas a seguir em relação à utilização de Hooks em nossas
aplicações:

I. Hooks são funções que lhe permitem “ligar-se” aos recursos de state e

105 of 137 08/05/2024, 20:16


ReactJS [Link]

ciclo de vida do React a partir de componentes funcionais.


II. O useState é chamado de dentro de um componente de classe para
adicionar states locais a ele.
III. O useState possui mais de um argumento que é basicamente o
estado inicial que queremos atualizar mais tarde com setState.

Está correto o que se afirma em:

A I, II e III.

B I e III.

C II e III.

D Somente I.

E I e II.

Parabéns! A alternativa E está correta.

Hooks são funções que permitem o uso de binds com recursos de state
e ciclo de vida a partir de componentes funcionais.

106 of 137 08/05/2024, 20:16


ReactJS [Link]

Acessando uma API


Vamos falar aqui como se deve consumir uma API externa para realizar
requisições a serviços para acessar e manipular dados.

Neste vídeo, explicaremos como desenvolver uma aplicação no React


que acesse uma API a partir das bibliotecas Fecth API, Axios e JQuery.

Roteiro de prática 1
Inicialmente, você precisa iniciar a prática sobre APIs no React com a
biblioteca Fetch API. Como as requisições de APIs externas são
assíncronas, uma boa prática é tratar dessa função com o useEffect.
Inicialmente, acesse o endereço:

[Link]

Passo 1

Agora, você terá a possibilidade de gerar dados no formato JSON com


diferentes tamanhos e formatos de dados. Em nosso exemplo,
usaremos os dados de 10 usuários com o seguinte formato:

[Link]

Segue parte do JSON.

Json

107 of 137 08/05/2024, 20:16
ReactJS [Link]

Json 

Passo 2

Para fins práticos, usaremos apenas uma variável para salvar os dados
retornados. Com o auxílio de map, percorreremos a lista, associando a
chave da tag <li> para cada ID e preenchendo com os dados que
escolhemos exibir. Para isso, execute o seguinte código:

Javascript 

108 of 137 08/05/2024, 20:16


ReactJS [Link]

O resultado é:

Resultado do uso da biblioteca Fecth API.

Passo 3

Agora, vamos instalar o módulo necessário para a utilização do Axios.


Como vimos anteriormente, temos de abrir nosso terminal e, dentro da
pasta de nossa aplicação, executar o comando:

npm install axios

109 of 137 08/05/2024, 20:16


ReactJS [Link]

Observe a imagem:

Resultado da execução do comando npm install axios.

Agora, vamos utilizar outro exemplo como fonte de dados, só que, dessa
vez, com 100 postagens:

[Link]

O resultado é dado por:

Json 

Passo 4

Execute o código abaixo para utilizar essa API e visualizar o resultado de


forma correta.

110 of 137 08/05/2024, 20:16


ReactJS [Link]

Javascript 

Dessa forma, obtemos o seguinte resultado:

111 of 137 08/05/2024, 20:16


ReactJS [Link]

Resultado do uso do Axios.

Passo 5

Novamente, é preciso instalar o módulo necessário para sua utilização.


Isso será feito de forma idêntica, abrindo o terminal e, dentro da pasta
de nossa aplicação, executando – conforme a documentação do jQuery
em [Link] – o seguinte comando:

npm install jquery

Observe a imagem:

Instalação do jquery.

Agora, vejamos um exemplo com 500 comentários que pode ser obtido
em:

[Link]

Passo 6

Execute o seguinte código:

Javascript 

112 of 137 08/05/2024, 20:16


ReactJS [Link]

Agora, é sua vez de colocar seus conhecimentos em prática. Bons


estudos!


Faça você mesmo!
Considere o seguinte cenário, o cliente pediu para fazer uma
modificação na saída do programa que traz os dados dos usuários da
base de dados:

[Link]

Desse modo, a saída deve ficar assim:

Nome:Leanne Graham

113 of 137 08/05/2024, 20:16


ReactJS [Link]

Nome:Bret
e-mail:Sincere@[Link]
endereço: Kulas Light
número: Apt. 556

Apresente o programa modificado.

Digite sua resposta aqui

Chave de resposta

114 of 137 08/05/2024, 20:16


ReactJS [Link]

4 - Rotas e Redux
Ao �nal deste módulo, você será capaz de traçar rotas com React Router e o controle da
camada de negócio com React Redux.

Biblioteca React Route


Agora, vamos usar duas extensões muito importantes no React: React
Router e React Redux. O Router é uma poderosa biblioteca de
roteamento que ajuda a adicionar novas telas e fluxos para nossa
aplicação de uma forma rápida, mantendo a URL sincronizada com
estado atual da nossa aplicação. Já o Redux surgiu devido à dificuldade
que as aplicações possuíam ao compartilharem informações
persistentes entre componentes.

Neste vídeo, apresentaremos as extensões React Router e React Redux.


Ambas são importantes para traçarmos fluxos de trabalho dentro de
uma aplicação React de forma eficiente.

Instalação
Como qualquer outra biblioteca, precisamos instalar os módulos
necessários para sua utilização. Seguindo a documentação oficial
([Link]
digitaremos este comando em nosso terminal:

npm install react—router-dom

115 of 137 08/05/2024, 20:16


ReactJS [Link]

Observe a imagem:

Instalação do react-router-dom.

Após sua instalação, a biblioteca disponibiliza quatro elementos novos


para se trabalhar:

• BrowserRouter

• Routes

• Route

• Link

Descreveremos, a seguir, cada um deles, abordando ainda suas sintaxes


e funcionalidades.

BrowserRouter
O primeiro elemento possui uma sintaxe bem simples. Basicamente, ele
encapsula nossa aplicação na origem de tudo, ou seja, [Link]. Confira!

Javascript 

116 of 137 08/05/2024, 20:16


ReactJS [Link]

Nesse momento, a nossa aplicação não sofreu nenhuma mudança


visual, só que agora podemos trabalhar com as rotas. Todas as rotas
deverão ser declaradas dentro desse escopo, caso contrário não serão
reconhecidas pela aplicação. Uma observação importante é que não
pode ter outro BrowserRouter no projeto.

Routes

É usado para encapsular todas as rotas. Sempre que declararmos o


Routes, a rota será buscada; assim que ela for localizada, a busca se
verá interrompida. Sua sintaxe é simples, encapsulando as rotas em si,
veja:

<Routes>
<Route ..../>
...
<Route ... />
</Routes>

117 of 137 08/05/2024, 20:16


ReactJS [Link]

Route

O mais importante elemento entre todos que estamos estudando, o


Route possui a responsabilidade de renderizar a interface, seja ela uma
página ou um componente. É possível declarar diferentes rotas
contendo o respectivo caminho, o componente e, caso necessário, até o
props. Sua sintaxe é a seguinte:

<Route path="sobre" element={<About />} />

Link

Permite que haja a navegação em si. Eis a sua sintaxe:

<Link to="/about"<Sobre>/Link>

Resultado Final
Modificando nosso [Link] para criar nossas rotas, veja agora o
resultado final com todos os exemplos estudados até o momento.

Javascript 

118 of 137 08/05/2024, 20:16


ReactJS [Link]

Observe que configuramos uma rota para Home, sendo o elemento e o


caminho vazios (linhas 18 e 29) necessários apenas para eliminar as
mensagens de aviso no console do navegador. Caso você não tenha
reparado, saiba que o histórico funciona automaticamente, permitindo o
retorno à página anterior.

Atividade 1
O React Router é uma biblioteca que permite navegar entre outras
interfaces em nossa aplicação. Neste material, falamos exclusivamente
da versão V6, modificando algumas sintaxes com novos recursos. Em
relação aos principais componentes dessa versão nova do Router,
assinale a alternativa correta.

O link é o elemento que encapsula a aplicação na origem


A
de tudo.

O Route é o componente menos importante, podendo ter


B apenas uma única rota contendo o caminho e o
componente, sem permitir a passagem de parâmetros.

119 of 137 08/05/2024, 20:16


ReactJS [Link]

O BrowserRouter permite a passagem de props e aceita


C
diferentes rotas – e não apenas uma.

O Route é o componente mais importante, pois é


D
responsável pela renderização da aplicação.

O BrowserRouter permite ao usuário navegar para outra


E
página.

Parabéns! A alternativa D está correta.

O Route é o componente mais importante, pois é responsável pela


renderização da aplicação. Ele permite a passagem de props e aceita
diferentes rotas – e não apenas uma.

Biblioteca React Redux


A React Redux é uma biblioteca oficial de vinculação da Redux UI para o
React, embora também possa ser utilizada por diferentes frameworks,
como Angular, Vue e Ember, por exemplo. Isso apenas reforça a
independência dela.

No React, por padrão, qualquer atualização em algum componente


executará uma nova renderização de todos os componentes dentro
daquele nó da árvore DOM, o que é custoso. Além disso, se os dados de

120 of 137 08/05/2024, 20:16


ReactJS [Link]

determinado componente filho não forem alterados, a nova


renderização fará um esforço desnecessário, pois o resultado da tela
será o mesmo.

Neste vídeo, explicaremos como instalar a biblioteca React Redux com o


objetivo de melhorar a renderização dos componentes visuais das telas.

Instalação
No React, por padrão, qualquer atualização em algum componente
executará uma nova renderização de todos os componentes dentro
daquele nó da árvore DOM, o que é custoso. Além disso, se os dados de
determinado componente filho não forem alterados, a nova
renderização fará um esforço desnecessário, pois o resultado da tela
será o mesmo.

Comentário

O React Redux implementa diversas otimizações, pulando renderizações


desnecessárias e aumentando a performance da nossa aplicação. Um
problema que os componentes enfrentavam se dava na passagem de
props entre os componentes.

Veja na imagem o percurso que um valor de props do componente D


precisa fazer até chegar ao seu destino, o componente H.

121 of 137 08/05/2024, 20:16


ReactJS [Link]

Passagem de props entre componentes.

O Redux trouxe uma forma de centralizar essas informações, ficando


responsável também por repassá-las para o componente que precisar
delas. Observe as imagens seguintes.

Organização das informações.

Breve resumo do fluxo dos dados em Redux.

122 of 137 08/05/2024, 20:16


ReactJS [Link]

Explicaremos agora alguns conceitos para a utilização do Redux de


forma simples. Com um formulário, vamos simular o login de um
usuário e transitar com esse usuário em outro componente.

Antes disso, porém, precisamos instalar algumas bibliotecas que


permitem a utilização de certos métodos que auxiliam e agilizam nossa
codificação. O intuito, afinal, é aprender a utilizar o Redux com a React.

Executaremos agora alguns comandos para a correta instalação das


bibliotecas.

npm install react-redux

npm install @reduxj/toolkit react-redux

Vejamos:

Instalação do react-redux.

123 of 137 08/05/2024, 20:16


ReactJS [Link]

Instalação do toolkit do react-redux.

Finalizando a instalação e iniciando nosso servidor, verifica-se que estão


disponibilizados os métodos que ajudam na manipulação dos estados.
Com o auxílio do fluxo de dados do Redux, iniciaremos agora nossa
implementação, explicando cada bloco e trecho do código.

Store
Este é o objeto em que salvaremos todos os estados que desejarmos
compartilhar de forma global em nossa aplicação. Sempre que qualquer
componente precisar ler um estado, basta consultar tal objeto e, assim,
resgatar o conteúdo.

Para alterar o estado, porém, precisamos utilizar outro conceito: as


actions.

Actions
São ações enviadas do nosso componente: elas acionam os reducers e
informam qual função terá de ser executada e qual valor que ela usará
como parâmetro. De forma resumida, é como se um comando fosse
enviado da seguinte forma: “O componente G quer alterar o estado B
usando a função F”.

Atividade 2
124 of 137 08/05/2024, 20:16
ReactJS [Link]

Atividade 2
Biblioteca utilizada para auxiliar o gerenciamento de estado, o Redux
centraliza as informações, sendo responsável por repassá-las para o
componente que precisa utilizar essas informações. Assinale a opção
correta a respeito do Redux.

Biblioteca JavaScript de código aberto exclusiva para o


A
React.

O Redux gera cópias de objetos, permitindo distribuir as


informações de seus estados. Com isso, ele permite que
B
os componentes possam acessar essas informações
por meio das próprias declarações.

O Redux é nativo do React, não precisando de uma


C
instalação extra.

Actions são basicamente as instruções enviadas aos


reducers, informando qual a função terá de ser
D
executada e que valor essa função utilizará como
parâmetro.

As actions recebem os dados não tratados e precisam


E que o Redux sinalize os componentes da atualização dos
estados.

125 of 137 08/05/2024, 20:16


ReactJS [Link]

Parabéns! A alternativa D está correta.

Apesar de ser a biblioteca oficial do Redux UI para o React, a forma com


que ela foi desenvolvida nos permite utilizá-la em qualquer framework,
inclusive em seus “concorrentes” diretos, como Angular e Vue, por
exemplo. Todos os estados são centralizados no objeto denominado
Store, não havendo a necessidade de gerar cópias. O Redux requer a
instalação de pelo menos uma biblioteca, a React Redux. Outra que
pode auxiliar nesse caso é a Redux Toolkit: com vários métodos já
definidos, ela ajuda na criação de nossos componentes.

Reducers, slicer e componentes login


e logout
Agora, vamos explorar ainda mais os recursos que instalamos no toolkit
do React. Assim, conseguimos ter mais controle sobre a nossa
aplicação e, finalmente, vamos explorar os componentes de login e
logout.

Neste vídeo, desenvolveremos uma aplicação com os componentes de


login e logout do toolkit do React.

126 of 137 08/05/2024, 20:16


ReactJS [Link]

Reducers
Depois que os dados são tratados, a atualização do estado é realizada e
todos os outros componentes que precisam usar esse novo estado são
avisados.

Slicers
A toolkit instalada nos trouxe um método que facilita a manipulação da
lógica por trás de reducers e actions, juntando-os em um único arquivo.
Veja como ficou a estrutura de pastas do nosso projeto:

127 of 137 08/05/2024, 20:16


ReactJS [Link]

Estrutura do projeto.

Componentes dentro da pasta components são os arquivos que cuidam


de actions, reducers e store dentro da pasta redux e, na raiz do projeto,
aqueles que iniciam a nossa aplicação. Uma primeira modificação é
encapsular com uma tag Provider o nó raiz (nesse caso, App). Confira!

Javascript 

128 of 137 08/05/2024, 20:16


ReactJS [Link]

É necessário passar como parâmetro nossa store, que será definida da


seguinte forma:

Javascript 

O método configureStore, que veio da biblioteca, recebe um parâmetro


do tipo reducer. No nosso exemplo, ele é nomeado como user.

Definiremos agora nosso slicer com a lógica de que precisamos para


manipular o usuário com reducers e actions.

Javascript 

129 of 137 08/05/2024, 20:16


ReactJS [Link]

O slice é criado ao chamar o método createSlice, que recebe como


primeiro parâmetro um nome. O segundo parâmetro será nosso estado
inicial; o terceiro, nossos reducers.

Definimos dois reducers (changeUser), em que o primeiro parâmetro é o


estado atual e o segundo, uma action que desestruturamos, obtendo
apenas o payload da função. Seu retorno sempre deve conter todos os
estados anteriores (...state) e os novos estados.

No logout, usamos apenas o estado atual sem a necessidade de definir


uma action de retorno. Seu retorno contém todos os estados anteriores
(...state) e os novos estados. Ao final do código, com o auxílio do slice,
podemos exportar nossas actions (linha 19) e os reducers (linha 23).

Componentes login e logout


O próximo código a ser verificado é o nosso componente login, que é
responsável por mudar o usuário ao clicar no botão login da nossa
aplicação. Confira!

Javascript

130 of 137 08/05/2024, 20:16


ReactJS [Link]

O userDispatch (linha 7) é um Hook do React Redux usado para a


execução de nossas actions. Sua sintaxe é simples, recebendo como
parâmetro uma action – no nosso código, o changeUser(name).

O logout seria bem semelhante ao login, utilizando a mesma função


userDispatch. Observe nosso código!

Javascript 

131 of 137 08/05/2024, 20:16


ReactJS [Link]

Para finalizar, veja o nosso componente User. Utilizando outro Hook do


React Redux, o useSelector, que recebe uma função que retém todo o
estado da aplicação, novamente o desestruturamos para pegar apenas
o nome do usuário.

Javascript 

Eis o resultado da aplicação:

132 of 137 08/05/2024, 20:16


ReactJS [Link]

Tela de login.

Atividade 3
No desenvolvimento do componente de logout, em um dado momento,
vimos a construção:

const handleLogout = () => {


dispatch(logout(name));
}

No entanto, também vimos uma estrutura sintática semelhante no


componente de login:

const handleLogin = () => {


dispatch(changeUser(name));
}

Nesse sentido, selecione a opção correta a respeito dessas estruturas

133 of 137 08/05/2024, 20:16


ReactJS [Link]

sintáticas.

São exemplos de arrows functions baseadas em


A
programação funcional.

São estruturas sintáticas típicas da programação


B
imperativa, que é bem característica do React.

Trata-se de exemplos da declaração de constantes no


Java Script com o objetivo de manter um
C
comportamento estático para os eventos de saída e
entrada do usuário do sistema.

São escolhas do desenvolvedor relacionadas às


D preferências dele sobre a forma de tratar a saída e
entrada do usuário do sistema.

Trata-se de uma construção sintática formada por


camadas que empilham os eventos solicitados pelo
E
usuário, para que sejam tratados logo que for possível
pelo React.

Parabéns! A alternativa A está correta.

A programação funcional é bastante utilizada pela biblioteca React do


Java Script, pois descreve mais naturalmente a forma como uma função

134 of 137 08/05/2024, 20:16


ReactJS [Link]

pode manipular dados e eventos. No caso dos exemplos apresentados


no enunciado, temos duas arrows functions específicas para tratar a
saída e a entrada do usuário no sistema.

O que você aprendeu neste


conteúdo?
• Os principais conceitos da biblioteca React.

• Como explorar os componentes do React para obter melhor


desempenho.

• Identificar alguns dos principais ambientes de desenvolvimento de


aplicações com o React, tanto on-line como no desktop.

• Como instalar as bibliotecas para usar APIs no React.

• Como desenvolver e aplicar os componentes de login e logout


como parte de aplicações gerais no React.

Explore +

135 of 137 08/05/2024, 20:16


ReactJS [Link]

Confira as indicações que separamos especialmente para você!

Acesse o site oficial do React e pesquise por “tutorial ”. Nele você


aprenderá ainda mais sobre os principais conceitos do React, o uso de
Hooks, bem como obterá mais informações sobre as APIS e encontrará
diversos exemplos que vão ajudar você a aprofundar os seus
conhecimentos.

Vá ao site oficial do nodejs e procure por procure por “Quick Start”. Lá,
encontrará diversos exemplos de JavaScript que vão ajudar você a se
aprofundar nessa linguagem de programação, que é fundamental para o
desenvolvimento de aplicações no React.

Referências
MAJ, W. W. Mostrar ciclos de vida menos comuns. Projects Wojtekamj.
Consultado na internet em: 23 jun. 2022.

REACT - uma biblioteca JavaScript para criar interfaces. Legacy.


Consultado na internet em: 6 maio de 2023.

SILVA, M. S. React - aprenda praticando: desenvolva aplicações web


reais com uso de biblioteca React e de seus módulos auxiliares. 1. ed.
Rio de Janeiro: Novatec, 2021.

STOYAN, S. Primeiros passos com React: construindo aplicações web.


1. ed. São Paulo: Novatec, 2019.

136 of 137 08/05/2024, 20:16


ReactJS [Link]

Material para download


Clique no botão abaixo para fazer o download do
conteúdo completo em formato PDF.

Download material

O que você achou do conteúdo?

Relatar problema

137 of 137 08/05/2024, 20:16

Você também pode gostar