React e API REST
React e API REST
Atividade
>>Verificando a instalação
npm -v
node -v
Criação de um projeto React
>> Criação de um projeto
mkdir nomedoprojeto
cd nomedoprojeto
cd nome-da-aplicacao
npm start
http://localhost:3000
IDE PARA DESENVOLVER
Visual Studio Code e
CodeSandBox
O CodeSandBox é uma ide online:
https://codesandbox.io/
O vscode também pode ser utilizado localmente no computador, eu utilizarei sua versão desktop para
Linux.
ECMAScript
React e ECMAScript
O React utiliza-se da ECMAScript.
O ECMAScript funciona com o objetivo de trazer um maior dinamismo para todas as páginas que você
encontra na internet.
https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons
https://marketplace.visualstudio.com/items?itemName=dsznajder.es7-react-js-snippets
https://marketplace.visualstudio.com/items?itemName=steoates.autoimport
COMPONENTES
Componentes
Componentes permitem você dividir a UI em partes independentes, reutilizáveis, ou seja, trata cada
parte da aplicação como um bloco isolado.
HANDS ON
1 - Abra o terminal.
2 - Crie uma pasta componentes e crie um projeto chamado componentes dela:
mkdir componentes
cd componentes
npx create-react-app componentes
cd componentes
npm start
Componentes
3 - Abra o projeto no vscode. Na pasta src devo criar os arquivos Headers.js, Article.js e Footer.js.
//Importar o React
import React from 'react';
//Exportar o componente
export default Headers;
Componentes
4 - O Article.js terá o seguinte conteúdo:
//Importar o React
import React from 'react';
//Exportar o componente
export default Article;
Componentes
5 - O Footer.js terá o seguinte conteúdo:
//Importar o React
import React from 'react';
//Exportar o componente
export default Footer;
6 - Preciso incluir os componentes na página principal Componentes
sendo o arquivo App.js:
//Incluir o React
import React from 'react';
O que é o EcmaScript?
O que é o JSX?
Ele é utilizado pelo navegador para representar a sua página Web. É ele que fornece uma representação
estruturada do documento como se fosse uma espécie de árvore com galhos, definindo métodos para
que possam ser alterados: estrutura, estilo e conteúdo do documento.
DOM
Lembrando que o Virtual DOM não é algo do navegador, e sim, um conceito implementado por
bibliotecas como o React.
APLICANDO ESTILOS DE CSS NO REACT
Styled Components
O Styled Components é uma biblioteca (lib) que nos permite escrever códigos CSS dentro
do JavaScript. Independente do pedaço da nossa aplicação onde o componente for
utilizado, seu estilo sempre será o mesmo.
HANDS ON
style={{}}
E a formatação CSS dentro das chaves. A formatação terá uma palavra chave para cada
situação. Um exemplo, cor de fundo:
backgroundColor:'#ccc'
Eu poderia simplesmente dizer que prop é o valor herdado, são variáveis passadas ou
recebidas, vale lembrar, que sempre acontece pelo componente pai (de um componente
pai para o componente filho).
HANDS ON
Na pasta Componentes crie um arquivo chamado Tool.js. O conteúdo está no slide que
segue:
Props
function Tool(props) {
const name = props.name;
const tool = props.tool;
return (
<div>
<h1>My name is {name}.</h1>
<p>My favorite design tool is {tool}.</p>
</div>
);
}
Nas importações:
Neste caso os dados estão sendo passados do componente pai (App) para o filho (Tool).
Exercício com Props
Na nossa solução utilizando um novo arquivo, como exibir idade e endereço?
STATE
STATE
O state é uma propriedade do componente onde colocamos dados que, quando mudados,
devem causar uma nova renderização.
O que é ‘estado’?
Em termos simples, ‘estado’ é todo dado que varia com o tempo. Essa mudança de valor
pode, ou não, ser fruto da interação do usuário com a aplicação.
STATE
Hands on
No arquivo App.js crie o construtor na classe:
class App extends Component {
constructor(props) {
super(props);
this.state = {
topping: "Pepperoni",
slices: 8
}
}
STATE
Hands on
Após a tag Tool vou utilizar dois parágrafos:
<Tool name="Ihechikara" tool="Figma"/>
<p>{this.state.topping}</p>
<p>{this.state.slices}</p>
COMPONENTES DE CLASSE E
COMPONENTES FUNCIONAIS
Componentes de classe
Os componentes de classe são classes do ES6 que retornam JSX. Abaixo, vemos a
mesma função Welcome, dessa vez retornada como um componente de classe:
Ex:
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
Componente funcional
Um componente funcional, basicamente, é uma função em JavaScript/ES6 que retorna um
elemento do React (JSX). A função abaixo é um componente funcional válido:
Ex:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
CICLO DE VIDA DO COMPONENTE
CICLO DE VIDA DO COMPONENTE REACT
O desenvolvimento de cada componente envolve o uso de diferentes métodos de ciclo de
vida. Eles são definidos como uma série de funções chamadas em vários estágios de um
componente. As quatro fases de vida são:
1. Inicializando
2. Montagem
3. Atualizando
4. Desmontando
CICLO DE VIDA DO COMPONENTE REACT
1 - Inicializando
Esta é a fase inicial do ciclo de vida do componente React. Como o nome sugere, esta
fase envolve todas as declarações, definições e inicialização de propriedades, etc.
Os métodos incluídos nesta fase são:
● getDefaultProps()
● getInitialState()
CICLO DE VIDA DO COMPONENTE REACT
2 - Montagem
A segunda fase do ciclo de vida do componente React, seguida pela fase de inicialização,
é a fase de montagem. Ele começa quando o componente é posicionado sobre o
contêiner DOM (ou seja, uma instância do componente é criada e inserida no DOM) e
renderizada em uma página da web.
Consiste em 2 métodos, a saber:
● componentWillMount()
● componentDidMount()
CICLO DE VIDA DO COMPONENTE REACT
3 -Atualização
A terceira fase do ciclo de vida do componente ReactJS é a fase de atualização. Seguido
pela fase de montagem, ele atualiza os estados e propriedades que foram declarados e
inicializados durante a fase de inicialização (se houver alguma alteração necessária). Ele
também é responsável por lidar com a interação do usuário e passar dados dentro da
hierarquia do componente. Ao contrário da fase de inicialização, esta fase pode ser
repetida várias vezes. Alguns dos métodos de ciclo de vida que se enquadram nesta
categoria são os seguintes:
● componentWillReceiveProps()
● shouldComponentUpdate()
● componentWillUpdate()
● componentDidUpdate()
CICLO DE VIDA DO COMPONENTE REACT
4 -Desmontagem
Desmontagem é a última fase do ciclo de vida do componente ReactJS. Esta fase inclui
aqueles métodos de ciclo de vida que são usados quando um componente está sendo
desanexado do contêiner DOM (ou seja, a instância do componente sendo destruída e
desmontada do DOM). Ele também é responsável por executar as tarefas de limpeza
necessárias.
● componentWillUnmount()
EVENTOS
ATRIBUINDO AÇÃO A UM BOTÃO
Vamos criar um arquivo chamado BotaoAcao.js na pasta componentes:
O conteúdo do arquivo será:
import React from "react";
alert("I'm an alert");
componentDidMount()
Este método é chamado logo após o componente ser montado na
árvore de elementos da tela.
CONCEITOS IMPORTANTES
res.json() - Envia uma resposta de requisição em formato de json.
setState() - Utilizado para alterar o estado do componente.
this.state - Aqui guardamos os dados do componente.
then() - O método then() é usado para lidar com tarefas
assíncronas, como uma chamada de API.
map() - nos permite percorrer um vetor e obter um novo array.
HANDS-ON API FETCH
Atividade
Crie um formulário similar ao
do lado usando nosso arquivo
como base.
CAMPO CONTROLADO E NÃO
CONTROLADO
Campo não controlado
Com valores de entrada não controlados, não há atualização ou
alteração de nenhum estado. Ele mantém seu próprio estado
interno, o que basicamente significa que ele se lembra do que você
digitou no campo.
Campo controlado
Em um campo controlado, os dados de formulário são manipulados
por um componente React.
Com um componente controlado, o valor da entrada é sempre
direcionado pelo estado do React.
Na maioria dos casos, recomendamos o uso de componentes
controlados para implementar formulários.
Campo controlado
import { useState } from 'react';
function MyControlledInput({ }) {
//Defina o estado que vai manter o valor de entrada:
const [value, setValue] = useState('');
//Crie o manipulador de eventos que atualiza o estado quando o valor de entrada
muda
const onChange = (event) => {
setValue(event.target.value);
};
Campo controlado
return (
<>
{/* Atribua o campo de entrada com o valor do estado e anexe o manipulador de
eventos */}
<div>Input value: {value}</div>
<input value={value} onChange={onChange} />
</>
);
}
Campo não controlado
function App() {
function onSubmit() {
console.log("Name value: " + window.name.value);
console.log("Email value: " + window.email.value);
}
return (
<form onSubmit={onSubmit}>
<input type="text" name="name" id="name" required />
<input type="email" name="email" id="email" required />
<input type="submit" value="Submit" />
</form>
);}
ARQUITETURA DE UM PROJETO REACT
ARQUITETURA
Existem várias boas práticas para estruturação de um projeto React. Veremos uma
arquitetura de projeto bem concisa e estruturada.
ARQUITETURA
1. Adaptadores
Adapters são os conectores de sua aplicação com o mundo exterior. Qualquer forma de
chamada de API ou interação com websocket que precise acontecer, para compartilhar
dados com um serviço ou cliente externo, deve acontecer dentro do próprio adaptador.
ARQUITETURA
2. Componentes
Eles terão a UI da sua aplicação.
ARQUITETURA
3. Contextos
Contém apenas o state que precisa ser compartilhado entre esses componentes.
ARQUITETURA
4. Páginas
O conceito de estado ficou complexo à medida que foi necessário compartilhar o estado
dentro da aplicação de uma forma global entre os componentes.
EXEMPLO
EXEMPLO
EXEMPLO
EXEMPLO
EXEMPLO
EXEMPLO
EXEMPLO
HOOKS
HOOKS
São recursos que permitem que você gerencie o estado, ciclos de vida do componente e
outros recursos do React sem precisar escrever componentes em forma de classes.
useState
Usado para adicionarmos estado (state) para nossos componentes funcionais, para
usá-lo temos a seguinte sintaxe:
O useEffect te permite executar uma função em alguns momentos durante o life cycle de
um componente.
userRef
O useRef te permite:
<Router>
<App />
</Router>
HANDS-ON
import './App.css';
function App() {
return (
<div className="App">
<Routes>
</Routes>
</div>
);
● Home
● Sobre
● Usuario
Home.js
return (
<div>
<h1>Página Inicial</h1>
Home.js
<nav>
<ul>
<li>
<Link to="/sobre">Sobre</Link>
</li>
<li>
<Link to="/usuario">Usuario</Link>
Home.js
</li>
</ul>
</nav>
</div>
);
return (
<div>
<h1>Sobre</h1>
Sobre.js
</div>
);
return (
<div>
<h1>Usuário</h1>
Usuario.js
</div>
);
O teste de software é uma maneira de avaliar a qualidade da aplicação e reduzir o risco de falha
em operação.
Testar não consiste apenas em executar testes (executar o software e verificar os resultados).
Executar testes é apenas uma das atividades.
function sum(a, b) {
return a + b;
}
module.exports = sum;
HANDS-ON
● PUT
O método PUT é utilizado como forma de atualizar um
determinado recurso.
● DELETE
O delete tem como finalidade a remoção de um determinado
recurso.
REST E SOAP
Através destas metodologias posso definir como uma API será
criada.
SOAP
● É um protocolo para troca de informações estruturadas que se
baseia na Linguagem de Marcação Extensível (XML) para seu
formato de mensagem.
REST
● É um modelo de arquitetura e não uma linguagem ou tecnologia
de programação, que fornece diretrizes para que os sistemas e
comuniquem diretamente usando os princípios e protocolos
existentes da Web.
Um cliente REST é um sistema ou programa que se utiliza da api
REST para execução dos verbos HTTP.
INSTALAÇÃO / USO DO POSTMAN
Instalação do Postman no Linux:
https://www.youtube.com/watch?v=9ZZdl4CQbCg