Tutorial ReactJS para iniciantes
โก Resumo Inteligente
ReactJS รฉ a base das interfaces de usuรกrio de inรบmeros sites e aplicativos mรณveis modernos. Esta pรกgina explica o que รฉ a biblioteca, como configurรก-la e como componentes, JSX, estado, propriedades e eventos funcionam em conjunto.

O que รฉ ReactJS?
ReactJS รฉ um front-end de cรณdigo aberto JavaBiblioteca de scripts para construรงรฃo de interfaces de usuรกrio. ReactJS ร mantido pela Meta (antiga Facebook) e por uma comunidade de desenvolvedores e empresas. ร amplamente utilizado como base para a criaรงรฃo de aplicativos de pรกgina รบnica e aplicativos mรณveis. ร muito fรกcil de usar e permite que os usuรกrios criem componentes de interface do usuรกrio reutilizรกveis.
Antes de escrever sua primeira linha de cรณdigo React, รฉ รบtil saber o que diferencia a biblioteca do React puro. JavaRoteiro. A prรณxima seรงรฃo descreve suas principais funcionalidades.
Recursos do ReactJS
JSX: JSX รฉ uma extensรฃo para JavaScript. Embora o uso de JSX no React nรฃo seja obrigatรณrio, รฉ um dos seus recursos interessantes e fรกceis de usar.
ComponentesOs componentes sรฃo como puros JavaFunรงรตes de script ajudam a simplificar o cรณdigo, dividindo a lรณgica em cรณdigo independente e reutilizรกvel. Podemos usar componentes como funรงรตes e componentes como classes. Os componentes tambรฉm possuem estado e propriedades, o que facilita o desenvolvimento. Dentro de um componente de classe, o estado e as propriedades sรฃo gerenciados.
DOM virtual: O React cria um DOM virtual, ou seja, um cache de estrutura de dados na memรณria. Somente as alteraรงรตes finais sรฃo posteriormente atualizadas no DOM do navegador, o que mantรฉm a renderizaรงรฃo rรกpida.
JavaExpressรตes de script: Expressรตes JS podem ser usadas em arquivos JSX utilizando chaves, por exemplo, {}.
Vantagens do ReactJS
Aqui estรฃo as principais vantagens/benefรญcios de usar ReactJS:
- ReactJS utiliza um DOM virtual que faz uso de um cache de estrutura de dados na memรณria, e apenas as alteraรงรตes finais sรฃo atualizadas no DOM do navegador. Isso torna o aplicativo mais rรกpido.
- Vocรช pode criar componentes de sua escolha usando o recurso de componentes do React. Os componentes podem ser reutilizados e tambรฉm sรฃo รบteis na manutenรงรฃo do cรณdigo.
- ReactJS รฉ um software de cรณdigo aberto. JavaBiblioteca de scripts, por isso รฉ fรกcil comeรงar a usรก-la.
- ReactJS tornou-se muito popular em um curto perรญodo e รฉ a base de produtos como o Facebook e Instagramร utilizado por muitas empresas famosas como a Apple, Netflix, etc.
- A Meta mantรฉm a biblioteca ReactJS, por isso ela รฉ bem mantida e atualizada.
- ReactJS pode ser usado para desenvolver UI rica para aplicativos desktop e mรณveis.
- Fรกcil de depurar e testar, pois a maior parte da codificaรงรฃo รฉ feita em JavaScript em vez de em HTML.
Desvantagens do ReactJS
Aqui estรฃo as desvantagens/contras de usar ReactJS:
- A maior parte do cรณdigo รฉ escrita em JSX, ou seja, HTML e CSS fazem parte do... JavaScript. Pode ser bastante confuso, jรก que a maioria das outras estruturas prefere keeping HTML separado do JavaCรณdigo de script.
- O tamanho dos arquivos do ReactJS รฉ comparativamente grande.
Conhecendo as vantagens e desvantagens, vocรช estรก pronto para configurar o React. A maneira mais rรกpida de experimentรก-lo รฉ diretamente de uma CDN, que abordaremos primeiro; configuraรงรตes baseadas em npm para projetos reais serรฃo apresentadas a seguir.
Usando ReactJS do CDN
Para comeรงar a trabalhar com React, primeiro precisamos adicionar o ReactJS ร nossa pรกgina. Vocรช pode comeรงar a usar o ReactJS facilmente com a CDN. JavaArquivos de script, conforme mostrado abaixo.
Acesse o site de documentaรงรฃo legado do React para obter os links do CDN, por exemplo: https://legacy.reactjs.org/docs/cdn-links.htmlE vocรช receberรก os arquivos necessรกrios, conforme explicado na imagem a seguir.
Para desenvolvedores
<script crossorigin src="https://unpkg.com/react@version/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.development.js"></script>
Para produรงรฃo
<script crossorigin src="https://unpkg.com/react@version/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.production.min.js"></script>
Substituir versรฃo com a versรฃo do React que vocรช desejar, tanto para react.development.js quanto para react-dom.development.js. Nesta pรกgina, usamos a versรฃo 16, portanto, os exemplos abaixo serรฃo executados sem alteraรงรตes.
ReactDOM.render com as createRoot โ veja a seรงรฃo sobre versรตes do React perto do final desta pรกgina.Caso vocรช planeje usar os arquivos da CDN, certifique-se de manter o atributo `crossorigin` para evitar problemas de domรญnio cruzado. O cรณdigo ReactJS nรฃo pode ser executado diretamente no navegador e precisa ser transpilado usando o Babel para cรณdigo nativo. JavaScript antes de ser executado no navegador.
Aqui estรก o script BabelJS que pode ser usado:
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
Aqui estรก um exemplo funcional de ReactJS usando arquivos CDN e o script BabelJS.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('app')
);
</script>
</body>
</html>
Saรญda:
Vamos nos aprofundar nos detalhes do cรณdigo no prรณximo capรญtulo; vamos ver como funciona com arquivos CDN. Usar o script Babel diretamente nรฃo รฉ uma boa prรกtica, e iniciantes devem usรก-lo apenas para aprender ReactJS por enquanto. Em produรงรฃo, vocรช precisarรก instalar o React usando o pacote npm.
Usando pacotes NPM
Certifique-se de ter o Node.js instalado. Caso contrรกrio, siga este tutorial para Node.js (https://www.guru99.com/node-js-tutorial.html) instalaรงรฃo.
Apรณs instalar o Node.js, crie uma pasta. reactproj/.
Para comeรงar com a configuraรงรฃo do projeto, execute o comando inicializaรงรฃo npm.
A estrutura de pastas ficarรก assim:
reactproj\ package.json
Agora vamos instalar os pacotes que precisamos.
Aqui estรก a lista de pacotes para ReactJS. Mantemos o React na versรฃo 16, entรฃo... ReactDOM.render Os exemplos nesta pรกgina funcionam exatamente como mostrado:
npm install react@16 --save npm install react-dom@16 --save npm install react-scripts --save
Abra o prompt de comando e execute os comandos acima dentro da pasta reactproj/.
Crie uma pasta src / Onde todo o cรณdigo JS serรก inserido. Todo o cรณdigo do projeto ReactJS estarรก disponรญvel na pasta src/. Crie um arquivo index.js e importe react e react-dom, como mostrado abaixo.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Jรก escrevemos o cรณdigo bรกsico para ReactJS. Explicaremos os detalhes no prรณximo capรญtulo. Queremos exibir Olรก, de Guru99 tutoriaisE o mesmo รฉ atribuรญdo ao elemento DOM com o id โrootโ. Ele รฉ obtido do arquivo index.html, que รฉ o arquivo inicial, como mostrado abaixo.
Crie uma pasta chamada public/ e adicione o arquivo index.html dentro dela, conforme mostrado abaixo.
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
O pacote react-scripts se encarregarรก de compilar o cรณdigo e iniciar o servidor para exibir o arquivo HTML, ou seja, index.html. Vocรช precisa adicionar o comando no package.json que usarรก o react-scripts para compilar o cรณdigo e iniciar o servidor, conforme mostrado abaixo:
"scripts": {
"start": "react-scripts start"
}
Depois de instalar todos os pacotes e adicionar o comando acima, o package.json final รฉ o seguinte:
Pacote.json
{
"name": "reactproj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "react-scripts start"
},
"author": "",
"license": "ISC",
"dependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-scripts": "^3.1.1"
}
}
Para comeรงar a testar o ReactJS, execute o comando:
npm run start
C:\reactproj>npm run start > reactproj@1.0.0 start C:\reactproj > react-scripts start
Isso abrirรก o navegador com o URL http://localhost:3000/ como mostrado abaixo:
public / index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Vamos usar o mesmo processo para executar o JavaOs arquivos de script tambรฉm serรฃo abordados nos prรณximos capรญtulos. Adicione todos os seus arquivos .js e .jsx na pasta src/. A estrutura de arquivos serรก a seguinte:
reactproj/
src/
index.js
node_modules/
public/
index.html
package.json
Como criar a configuraรงรฃo do seu primeiro projeto React
Aqui estรก um guia passo a passo neste tutorial de ReactJS para vocรช comeรงar a criar seu primeiro aplicativo React.
Passo 1) Importe os pacotes react.
1. Para comeรงar com ReactJS, precisamos primeiro importar os pacotes react da seguinte maneira.
import React from 'react'; import ReactDOM from 'react-dom';
2. Salve o arquivo como index.js na pasta src/.
Passo 2) Escreva de forma simples. Code.
Escreveremos um cรณdigo simples neste tutorial React JS, onde exibiremos a mensagem โOlรก, de Guru99 tutoriais!
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
ReactDOM.render adicionarรก o Adicione a tag ao elemento com o id root. Aqui estรก o arquivo HTML que temos:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Passo 3) Compile o Code.
A seguir neste tutorial React.js, precisamos compilar o cรณdigo para obter a saรญda no navegador.
Aqui estรก a estrutura de pastas:
reactproj/
node_modules/
src/
index.js
package.json
public/
index.html
Adicionamos os comandos para compilar o arquivo final em package.json da seguinte forma:
"scripts": {
"start": "react-scripts start"
},
Para compilar o arquivo final, execute o seguinte comando:
npm run start
Ao executar o comando acima, os arquivos serรฃo compilados e vocรช serรก notificado caso haja algum erro. Se tudo estiver correto, o navegador serรก aberto e a pรกgina serรก executada em http://localhost:3000/
Comando: npm run start:
C:\reactproj>npm run start > reactproj@1.0.0 start C:\reactproj > react-scripts start
Passo 4) Verifique a saรญda.
As URL http://localhost:3000 Serรก aberto no navegador assim que o cรณdigo for compilado, conforme mostrado abaixo:
Como configurar o React com o Vite (abordagem moderna)
A configuraรงรฃo do react-scripts acima vem do Create React App (CRA), que foi o modelo inicial padrรฃo por anos. A equipe do React oficialmente descontinuou o Create React App em fevereiro de 2025, portanto, novos projetos devem usar uma ferramenta de compilaรงรฃo moderna. A opรงรฃo mais popular hoje รฉ o React Native. parafuso, que inicia mais rรกpido e produz builds menores.
Veja como criar um novo projeto React com o Vite:
Passo 1) Execute o comando de scaffolding no seu terminal:
npm create vite@latest my-react-app -- --template react
Passo 2) Acesse a pasta e instale as dependรชncias:
cd my-react-app npm install
Passo 3) Inicie o servidor de desenvolvimento:
npm run dev
A Vite disponibiliza o aplicativo em http://localhost:5173/ Por padrรฃo, ele recarrega instantaneamente ao salvar um arquivo.
Principais diferenรงas em relaรงรฃo ร configuraรงรฃo anterior nesta pรกgina:
- O arquivo de entrada รฉ src/main.jsx em vez de src/index.js.
- Ele instala a versรฃo mais recente do React, que usa criarRaiz em vez de ReactDOM.render.
- O arquivo index.html estรก localizado na raiz do projeto, nรฃo em public/.
- As compilaรงรตes sรฃo produzidas com
npm run buildem uma pasta dist/.
Para necessidades de pilha completa, como roteamento e renderizaรงรฃo no servidor, a equipe do React tambรฉm recomenda frameworks como Prรณximo.jsTudo o que vocรช aprender nos capรญtulos abaixo โ JSX, componentes, estado e propriedades โ aplica-se sem alteraรงรตes em um projeto Vite ou Next.js.
O que รฉ JSX?
JSX รฉ uma extensรฃo para JavaScript. ร um script modelo onde vocรช terรก o poder de usar HTML e JavaEscrevam o roteiro juntos.
Aqui estรก um exemplo simples de cรณdigo JSX.
const h1tag = "<h1>Hello, from Guru99 Tutorials!</h1>";
Por que precisamos de JSX no React?
Para uma interface de usuรกrio, precisamos de HTML, e cada elemento no DOM terรก eventos a serem tratados, mudanรงas de estado, etc.
No caso do React, ele nos permite utilizar HTML e JavaCrie um script no mesmo arquivo e lide com as mudanรงas de estado no DOM de maneira eficiente.
Expressรตes em JSX
Aqui estรก um exemplo simples de como usar expressรตes em JSX.
Em exemplos anteriores do ReactJS, tรญnhamos escrito algo como:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Agora vamos alterar o cรณdigo acima para adicionar expressรตes. Expressรตes sรฃo usadas dentro de chaves {} e sรฃo expandidas em tempo de execuรงรฃo. Expressรตes em React sรฃo semelhantes a JavaExpressรตes de script.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, from Guru99 Tutorials!";
const h1tag = "<h1>{display}</h1>";
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Vamos agora testar o mesmo no navegador.
Como vocรช pode ver na captura de tela acima, a expressรฃo {display} nรฃo รฉ substituรญda. O React nรฃo sabe o que fazer quando uma expressรฃo รฉ usada dentro de um arquivo .js.
Vamos agora adicionar alteraรงรตes e criar um arquivo .jsx, conforme mostrado abaixo:
teste.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, to Guru99 Tutorials";
const h1tag =<h1>{display}</h1>;
export default h1tag;
Adicionamos o cรณdigo necessรกrio e usaremos o arquivo test.jsx em index.js. Queremos o h1tag A variรกvel deve ser usada dentro do arquivo index.js, portanto, ela รฉ exportada conforme mostrado acima no arquivo test.jsx.
Segue o cรณdigo modificado em index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import h1tag from './test.jsx';
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Para usar o arquivo test.jsx no arquivo index.js, primeiro precisamos importรก-lo, como mostrado abaixo:
import h1tag from './test.jsx';
Podemos usar o h1tag agora no ReactDOM.render conforme mostrado abaixo:
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Aqui estรก o resultado quando verificamos o mesmo no navegador:
O que sรฃo componentes no ReactJS?
Os componentes sรฃo como puros JavaFunรงรตes de script que ajudam a simplificar o cรณdigo, dividindo a lรณgica em cรณdigo independente e reutilizรกvel.
Componentes como funรงรตes
teste.jsx
import React from 'react';
import ReactDOM from 'react-dom';
function Hello() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
const Hello_comp = <Hello />;
export default Hello_comp;
Criamos uma funรงรฃo chamada Olรก que retorna uma tag h1, como mostrado acima. O nome da funรงรฃo atua como um elemento, como mostrado abaixo:
const Hello_comp = <Hello />; export default Hello_comp;
O componente Olรก รฉ usado como uma tag HTML, ou seja, , designado para o Olรก_comp variรกvel, e a mesma รฉ exportada usando o comando export.
Vamos agora usar esse componente no arquivo index.js, como mostrado abaixo:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Aqui estรก a saรญda no navegador:
Classe como componente
Aqui estรก um exemplo de ReactJS que usa uma classe como componente.
teste.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
render() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
}
export default Hello;
Podemos usar o componente Hello no arquivo index.js da seguinte forma:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
O componente Hello รฉ usado como uma tag HTML, ou seja, .
Aqui estรก o resultado do mesmo.
Componentes de classe vs. componentes de funรงรฃo e hooks
Agora que vocรช viu as duas maneiras de escrever um componente, qual delas vocรช deve usar? Esta pรกgina ensina componentes de classe porque eles tornam explรญcitos os conceitos de estado e ciclo de vida, o que รฉ valioso para iniciantes e ainda aparece em bases de cรณdigo legadas. No entanto, desde que o React 16.8 introduziu os Hooks, os componentes de funรงรฃo tambรฉm podem armazenar estado e sรฃo o estilo recomendado para todo o cรณdigo novo.
| Aspecto | Componente de Classe | Componente de funรงรฃo com ganchos |
|---|---|---|
| Estado | this.state e this.setState() | gancho useState() |
| Ciclo da vida | componentDidMount, componentDidUpdate, componentWillUnmount | O gancho useEffect() abrange todos os trรชs. |
| Sintaxe | Mais cรณdigo padrรฃo (construtor, bind, this) | Mais curto, sem essa palavra-chave |
| Status | Suporte, estilo legado | Recomendado para novos cรณdigos. |
Aqui estรก o exemplo de estado desta pรกgina reescrito com o hook useState:
import React, { useState } from 'react';
function Hello() {
const [msg] = useState("Hello, from Guru99 Tutorials!");
return <h1>{msg}</h1>;
}
export default Hello;
Ambas as versรตes produzem a mesma saรญda. Aprenda a sintaxe de classe usada nos capรญtulos abaixo e, em seguida, pratique a conversรฃo de cada exemplo para Hooks.
O que รฉ um estado no ReactJS?
Um estado รฉ um JavaObjeto de script, semelhante a props, que armazena dados a serem usados โโcom o renderizador ReactJS. Os dados de estado sรฃo um objeto privado e sรฃo usados โโdentro de componentes de uma classe.
Exemplo de Estado
Aqui estรก um exemplo funcional de como usar o estado dentro de uma classe.
teste.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
msg: "Hello, from Guru99 Tutorials!"
}
}
render() {
return <h1>{this.state.msg}</h1>;
}
}
export default Hello;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Isto รฉ o que obtemos quando testamos no navegador:
O que sรฃo acessรณrios no ReactJS?
Props sรฃo propriedades que podem ser usadas dentro de um componente. Elas funcionam como objetos ou variรกveis โโglobais que podem ser utilizadas dentro do componente.
Adereรงos para componente de funรงรฃo
Aqui estรก um exemplo de passagem de adereรงos para um componente de funรงรฃo.
import React from 'react';
import ReactDOM from 'react-dom';
function Hello(props) {
return <h1>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Conforme mostrado acima, adicionamos o msg atributo para o componente. O mesmo pode ser acessado como adereรงos dentro da funรงรฃo Hello, que รฉ um objeto que terรก o msg detalhes do atributo, e o mesmo รฉ usado como uma expressรฃo.
O componente รฉ usado em index.js da seguinte forma:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Aqui estรก a saรญda no navegador:
Adereรงos para componente de classe
Para acessar as propriedades de uma classe, podemos fazer da seguinte maneira:
teste.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
render() {
return <h1>{this.props.msg}</h1>;
}
}
export default Hello;
As msg O atributo รฉ passado para o componente em index.js da seguinte forma:
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello msg="Hello, from Guru99 Tutorials!" />,
document.getElementById('root')
);
Esta รฉ a saรญda no navegador:
Verifique tambรฉm: - Tutorial AngularJS para iniciantes: Aprenda AngularJS passo a passo
Ciclo de vida de um componente
Com os conceitos de componentes, estado e propriedades jรก abordados, o prรณximo passo รฉ entender quando o React chama os mรฉtodos do seu componente. O ciclo de vida de um componente รฉ dividido em etapas de Inicializaรงรฃo, Montagem, Atualizaรงรฃo e Desmontagem.
Segue abaixo uma explicaรงรฃo detalhada de cada etapa.
Um componente em ReactJS possui os seguintes estรกgios:
Inicializaรงรฃo: Este รฉ o primeiro estรกgio do ciclo de vida do componente.
Aqui terรก os adereรงos padrรฃo e o estado no nรญvel inicial.
MontagemNesta fase, o componente รฉ renderizado dentro do DOM. Temos acesso aos seguintes mรฉtodos no estado de montagem:
- render(): Vocรช tem esse mรฉtodo para todos os componentes criados. Ele retorna o nรณ HTML.
- componentDidMount(): Este mรฉtodo รฉ chamado imediatamente apรณs o componente ser adicionado ao DOM.
AtualizarNesse estado, o usuรกrio interage com o DOM e ele รฉ atualizado. Por exemplo, vocรช digita algo na caixa de texto, e as propriedades do estado sรฃo atualizadas.
A seguir estรฃo os mรฉtodos disponรญveis no estado de atualizaรงรฃo:
- shouldComponentUpdate(): chamado antes da renderizaรงรฃo; permite que vocรช decida se o componente deve ser atualizado. Retornar verdadeiro renderiza o componente novamente.
- componentDidUpdate(): chamado apรณs o componente ser atualizado.
Desmontando: Essa situaรงรฃo entra em vigor quando o componente nรฃo รฉ necessรกrio ou รฉ removido.
A seguir, o mรฉtodo disponรญvel no estado desmontado:
- componentWillUnmount(): chamado imediatamente antes do componente ser removido ou destruรญdo.
Exemplo prรกtico de mรฉtodos de ciclo de vida
Aqui estรก um exemplo funcional que mostra os mรฉtodos chamados em cada etapa.
Exemplo: complife.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class COMP_LIFE extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
componentDidMount() {
console.log('Mounting State : calling method componentDidMount');
}
shouldComponentUpdate() {
console.log('Update State : calling method shouldComponentUpdate');
return true;
}
componentDidUpdate() {
console.log('Update State : calling method componentDidUpdate')
}
componentWillUnmount() {
console.log('UnMounting State : calling method componentWillUnmount');
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default COMP_LIFE;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import COMP_LIFE from './complife.jsx';
ReactDOM.render(
<COMP_LIFE />,
document.getElementById('root')
);
Ao verificar a saรญda no navegador:
No console do navegador, vocรช obtรฉm:
Quando o usuรกrio entra na caixa de texto:
No console, as seguintes mensagens sรฃo exibidas:
Agora que vocรช jรก sabe quando um componente รฉ renderizado e atualizado, vamos aplicar estado e eventos a um caso de uso prรกtico: lidar com a entrada de dados do usuรกrio por meio de formulรกrios.
Trabalhando com Formulรกrios
Em ReactJS, elementos de entrada HTML como , , e <select /> tรชm seu prรณprio estado e precisam ser atualizados quando o usuรกrio interage, usando o mรฉtodo setState().
Neste capรญtulo, veremos como trabalhar com formulรกrios em ReactJS.
Aqui estรก um exemplo prรกtico:
formulรกrio.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Form extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.formSubmit = this.formSubmit.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
formSubmit(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<form>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="submit" value="Submit" onClick={this.formSubmit} />
</form>
);
}
}
export default Form;
Para os campos de entrada, precisamos manter o estado, e para isso o React fornece um mรฉtodo especial chamado definirEstado, que ajuda a manter o estado sempre que hรก uma mudanรงa. Em uma aplicaรงรฃo real, tambรฉm รฉ chamado de event.preventDefault() Dentro do formulรกrio FormSubmit, para impedir que o navegador recarregue a pรกgina ao enviar o formulรกrio.
Utilizamos os eventos onChange e onClick na caixa de texto e no botรฃo de envio. Quando o usuรกrio digita na caixa de texto, o evento onChange รฉ acionado e o campo "name" dentro do objeto de estado รฉ atualizado, conforme mostrado abaixo:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Form from './form.jsx';
ReactDOM.render(
<Form />,
document.getElementById('root')
);
A saรญda no navegador รฉ a seguinte:
Passo 1) Digite seu nome na caixa de texto:
Passo 2) Clique no botรฃo Enviar:
Trabalhando com eventos no ReactJS
Os formulรกrios sรฃo apenas uma das fontes de interaรงรฃo do usuรกrio. Trabalhar com eventos no ReactJS รฉ da mesma forma que vocรช faria em... JavaScript. Vocรช pode usar todos os manipuladores de eventos que sรฃo usados โโem JavaScript. O mรฉtodo setState() รฉ usado para atualizar o estado quando o usuรกrio interage com qualquer elemento HTML.
Aqui estรก um exemplo prรกtico de como usar eventos em ReactJS.
eventos.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class EventTest extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default EventTest;
Para os campos de entrada, precisamos manter o estado, e para isso o React fornece o definirEstado mรฉtodo, que ajuda a manter o estado sempre que ocorre uma mudanรงa.
Utilizamos os eventos em mudanรงa e onClick na caixa de texto e no botรฃo. Quando o usuรกrio digita na caixa de texto, o em mudanรงa O evento รฉ acionado e o campo "nome" dentro do objeto de estado รฉ atualizado, conforme mostrado abaixo:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import EventTest from './events.jsx';
ReactDOM.render(
<EventTest />,
document.getElementById('root')
);
Aqui estรก a saรญda no navegador:
Quando um usuรกrio insere o nome:
Quando o usuรกrio clica no botรฃo Clique Aqui:
Trabalhando com CSS Inline no ReactJS
Depois que seus componentes lidam com dados e eventos, a etapa final รฉ estilizar. Vamos analisar um exemplo prรกtico para entender o CSS inline no ReactJS.
adicionar estilo.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const h1Style = {
color: 'red'
};
function Hello(props) {
return <h1 style={h1Style}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Adicionei o estilo de cor 'vermelho' ร tag h1.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
A saรญda no navegador รฉ a seguinte:
Vocรช pode criar um objeto com o estilo desejado para o elemento e usar uma expressรฃo para adicionar o estilo, como mostrado no exemplo acima.
Trabalhando com CSS externo no ReactJS
Vamos criar um arquivo CSS externo. Para isso, crie uma pasta chamada css/ e adicione o arquivo style.css dentro dela.
style.css
.h1tag {
color:red;
}
Adicione o style.css ao seu arquivo index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id = "root"></div>
</body>
</html>
Agora vamos adicionar a classe ร tag h1 no arquivo .jsx.
adicionar estilo.jsx
import React from 'react';
import ReactDOM from 'react-dom';
let classforh1 = 'h1tag';
function Hello(props) {
return <h1 className={classforh1}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
O atributo className recebe os detalhes da classe. Observe que o JSX usa nome da classe em vez do atributo de classe HTML, porque `class` รฉ uma palavra-chave reservada em JavaScript. Agora vamos testรก-lo no navegador.
Isto รฉ o que vocรช vรช ao inspecionar a tag h1 no navegador:
Vocรช pode ver que a classe โh1tagโ foi adicionada com sucesso ร tag h1.
Por que ReactDOM.render foi substituรญdo por createRoot?
Todos os exemplos nesta pรกgina montam o aplicativo com ReactDOM.render, o que รฉ correto para o React 16 e 17, as versรตes abordadas neste curso. O React 18, lanรงado em marรงo de 2022, substituiu esse ponto de entrada pela API createRoot, e o React 19 removeu o ReactDOM.render completamente. O motivo รฉ a concorrรชncia: createRoot permite que o React prepare vรกrias versรตes da interface do usuรกrio ao mesmo tempo, interrompa a renderizaรงรฃo de baixa prioridade e mantenha a consistรชncia.ping e animaรงรตes suaves. Recursos como agrupamento automรกtico, useTransition e streaming baseado em Suspense dependem disso.
O equivalente moderno do arquivo index.js usado ao longo desta pรกgina tem a seguinte aparรชncia:
import { createRoot } from 'react-dom/client';
const root = createRoot(document.getElementById('root'));
root.render(<h1>Hello, from Guru99 Tutorials!</h1>);
Tudo o que vocรช aprendeu aqui โ componentes, JSX, estado, propriedades e eventos โ funciona da mesma maneira apรณs essa alteraรงรฃo de uma linha no ponto de entrada. Diferenรงas de versรฃo como essa sรฃo comuns em Perguntas de entrevista sobre React JSPortanto, vale a pena entender ambas as APIs.
Perguntas Frequentes
Verifique tambรฉm: - As 70 principais perguntas e respostas da entrevista React (atualizado)























