Criar Componente no React js

Como Criar Componentes no React JS: Guia Passo a Passo com Exemplos
Você já percebeu que vários sites possuem botões, cartões, menus e formulários parecidos? O React permite criar essas partes separadamente e reutilizá-las em diferentes lugares. Neste tutorial, você vai aprender o que são componentes no React, como criá-los, como enviar informações para eles e como organizar seu código.
1. O que é um componente no React?
Um componente é uma pequena parte da interface de um site. Ele pode representar um botão, um cartão de produto, um menu de navegação ou até uma página inteira.
Imagine que você está construindo uma casa com blocos de montar. Em vez de fabricar cada parede do zero, você cria blocos e os utiliza várias vezes. No React, os componentes funcionam de maneira parecida.
Exemplo do cotidiano: imagine uma loja virtual com 20 produtos. Todos precisam mostrar uma imagem, um nome e um preço. Você pode criar um componente chamado Produto e utilizá-lo nos 20 produtos.
Veja dois exemplos simples de componentes:
- BotaoComprar: mostra um botão para comprar um produto.
- CartaoProduto: mostra o nome, o preço e a descrição de um produto.
A grande vantagem é que você pode escrever a estrutura uma vez e reutilizá-la quantas vezes precisar.
2. O que você precisa conhecer antes?
Para criar componentes, é útil conhecer três conceitos básicos: JavaScript, JSX e funções.
JavaScript
JavaScript é uma linguagem de programação que permite criar comportamentos e trabalhar com informações. O React utiliza JavaScript para construir interfaces.
Funções
Uma função é um bloco de código que pode ser executado quando necessário. No React, um componente normalmente é uma função que retorna o que deve aparecer na tela.
JSX
JSX é uma sintaxe que permite escrever estruturas parecidas com HTML dentro do JavaScript. Ele facilita a descrição da interface que queremos mostrar.
Veja um exemplo de JSX:
Este código descreve um título e um parágrafo que poderão aparecer na tela.
const mensagem = (
<div>
<h1>Olá, mundo!</h1>
<p>Estou aprendendo React.</p>
</div>
);
Entenda as partes:
constcria uma variável cujo valor não pode ser reatribuído.mensagemé o nome da variável.- Os parênteses agrupam a estrutura JSX.
div,h1eprepresentam elementos da interface.
Atenção: esse primeiro exemplo apenas guarda JSX em uma variável. Para exibi-lo em uma aplicação React, precisamos utilizá-lo dentro de um componente renderizado pela aplicação.
3. Como criar seu primeiro componente React
Vamos criar um componente chamado Saudacao. Ele mostrará uma mensagem na tela.
Crie um arquivo
Em um projeto React, crie um arquivo chamado Saudacao.jsx. Se o projeto utiliza TypeScript, o arquivo pode ser Saudacao.tsx.
Crie a função do componente
Escreva uma função com o nome Saudacao e faça com que ela retorne JSX.
Este componente apresenta uma mensagem simples.
function Saudacao() {
return (
<div>
<h1>Olá, estudante!</h1>
<p>Bem-vindo ao React.</p>
</div>
);
}
export default Saudacao;
Explicação de cada parte:
function Saudacao()declara a função do componente.returnindica o que o componente devolve para o React exibir.divagrupa o título e o parágrafo em um único elemento.export default Saudacaopermite importar esse componente em outro arquivo.
Olá, estudante!
Bem-vindo ao React.
Utilize o componente
Agora, abra o arquivo principal da sua aplicação, geralmente App.jsx, e importe o componente.
import Saudacao from "./Saudacao";
function App() {
return (
<main>
<Saudacao />
</main>
);
}
export default App;
O comando import traz o componente para o arquivo atual. Já <Saudacao /> utiliza o componente como se fosse uma etiqueta personalizada.
Em um projeto React já configurado, o ponto de entrada da aplicação renderiza o componente principal, normalmente App. Assim, o React consegue exibir também o componente Saudacao, que está dentro dele.
Regra importante: os nomes dos componentes React devem começar com letra maiúscula. Use Saudacao, e não saudacao, quando estiver criando um componente personalizado.
4. Como funcionam os componentes por trás dos panos?
Quando você escreve <Saudacao />, o React reconhece que precisa utilizar o componente chamado Saudacao.
O processo pode ser entendido em quatro etapas:
O React encontra o componente
A aplicação contém uma referência ao componente Saudacao.
O componente retorna JSX
A função descreve os elementos que devem fazer parte da interface.
O React processa a descrição
O JSX é transformado em chamadas JavaScript que descrevem a interface. O React usa essa descrição para determinar as alterações necessárias.
O navegador mostra o resultado
O React DOM cuida de atualizar os elementos da página no navegador.
Uma comparação simples: o componente é como a receita de um bolo. O JSX descreve os ingredientes e a estrutura. O React utiliza essa descrição para organizar o que deve aparecer na tela.
É importante entender que um componente não é necessariamente um arquivo separado. Criar um arquivo para cada componente é uma forma comum de organizar projetos, mas componentes também podem ser declarados no mesmo arquivo quando isso faz sentido.
5. Como passar informações para um componente com props
Até agora, nosso componente sempre mostrou a mesma mensagem. Mas e se quisermos mostrar o nome de diferentes pessoas sem criar uma função nova para cada uma?
Para isso, usamos props. Props são informações que um componente recebe de quem o utiliza.
Imagine um formulário de inscrição. O mesmo modelo pode receber o nome de várias pessoas. As props funcionam como os campos preenchidos desse formulário.
O componente recebe a informação pela propriedade nome e utiliza seu valor na mensagem.
function Saudacao({ nome }) {
return (
<h1>
Olá, {nome}!
</h1>
);
}
export default Saudacao;
O que significa { nome }?
A função recebe um objeto chamado props. A escrita { nome } utiliza a desestruturação do JavaScript para retirar a propriedade nome desse objeto.
Dentro do JSX, as chaves permitem inserir uma expressão JavaScript. Assim, {nome} mostra o valor recebido, em vez de exibir a palavra literalmente.
import Saudacao from "./Saudacao";
function App() {
return (
<main>
<Saudacao nome="Ana" />
<Saudacao nome="Pedro" />
</main>
);
}
export default App;
Olá, Ana!
Olá, Pedro!
Observe a economia de trabalho: criamos o componente uma vez e o utilizamos duas vezes, enviando valores diferentes.
Boa prática: trate as props como informações somente para leitura. Se precisar mudar uma informação durante a interação com o usuário, normalmente você utilizará o estado do React, conhecido como state.
6. Como criar um componente de cartão de produto
Agora vamos utilizar o que aprendemos em um exemplo parecido com uma loja virtual. Nosso cartão mostrará o nome e o preço de um produto.
Primeiro, criaremos um componente chamado CartaoProduto. Ele receberá duas props: nome e preco.
function CartaoProduto({ nome, preco }) {
return (
<article>
<h2>{nome}</h2>
<p>
Preço: R$ {preco.toFixed(2)}
</p>
</article>
);
}
export default CartaoProduto;
Entendendo o código:
nomeguarda o nome do produto recebido.precoguarda o preço recebido como número.articlerepresenta um conteúdo independente na página.toFixed(2)transforma o número em uma representação com duas casas decimais.
Atenção: toFixed(2) não transforma o valor em uma moeda completa. Ele apenas formata o número com duas casas decimais. Para exibir preços brasileiros de maneira mais adequada, também podemos utilizar Intl.NumberFormat.
import CartaoProduto from "./CartaoProduto";
function App() {
return (
<main>
<CartaoProduto
nome="Teclado"
preco={129.90}
/>
<CartaoProduto
nome="Mouse"
preco={79.90}
/>
</main>
);
}
export default App;
Como os preços são valores numéricos, usamos chaves para enviá-los como expressões JavaScript. Se escrevêssemos preco="129.90", estaríamos enviando uma string, ou seja, um texto.
Por que esse modelo é útil? Se quisermos mudar o formato visual de todos os cartões, podemos alterar o componente CartaoProduto sem reescrever cada produto.
7. Como estilizar componentes com CSS
Criar o componente define sua estrutura. Para mudar cores, espaçamentos, bordas e fontes, podemos utilizar CSS.
No React, um arquivo CSS pode ser importado para que suas regras sejam incluídas na aplicação. Isso não significa que todas as regras ficam automaticamente isoladas: os seletores CSS continuam podendo afetar outros elementos que correspondam a eles.
/* Aparência do cartão de produto */
.cartao-produto {
background: #161b22;
color: #ffffff;
border: 1px solid #30363d;
border-radius: 12px;
padding: 20px;
margin-bottom: 16px;
}
.cartao-produto h2 {
color: #58a6ff;
margin-top: 0;
}
Para usar esse CSS, importe o arquivo no componente e aplique a classe ao elemento:
import "./CartaoProduto.css";
function CartaoProduto({ nome, preco }) {
return (
<article className="cartao-produto">
<h2>{nome}</h2>
<p>Preço: R$ {preco.toFixed(2)}</p>
</article>
);
}
export default CartaoProduto;
Perceba que utilizamos className, e não class. Em JSX, a propriedade padrão para definir a classe CSS de um elemento é className.
8. Como criar componentes com conteúdo interno
Além de receber informações por props, um componente pode receber outros elementos dentro dele. Para isso, o React disponibiliza a propriedade especial children.
Imagine uma caixa. O componente cria a caixa, enquanto o conteúdo interno pode ser diferente a cada utilização.
function Caixa({ children }) {
return (
<section className="caixa">
{children}
</section>
);
}
export default Caixa;
Agora podemos colocar diferentes conteúdos dentro do mesmo componente:
import Caixa from "./Caixa";
function App() {
return (
<main>
<Caixa>
<h2>Meu perfil</h2>
<p>Aprendendo React.</p>
</Caixa>
<Caixa>
<h2>Meus estudos</h2>
<p>Praticando componentes.</p>
</Caixa>
</main>
);
}
export default App;
O React passa o conteúdo que está entre as etiquetas de abertura e fechamento para a propriedade children. Dessa maneira, o componente Caixa controla a estrutura externa, enquanto cada utilização define seu próprio conteúdo.
9. Diferença entre componente, props e state
Esses três conceitos trabalham juntos, mas cada um tem uma função diferente.
| Conceito | O que faz | Exemplo |
|---|---|---|
| Componente | Define uma parte da interface. | Botão, menu ou cartão. |
| Props | Passam informações para o componente. | Nome e preço do produto. |
| State | Guarda informações que podem mudar durante o uso. | Quantidade de itens no carrinho. |
Por exemplo, um componente Contador pode começar com o número zero e aumentar quando o usuário clica em um botão. Como o número muda durante a interação, podemos utilizar o hook useState.
import { useState } from "react";
function Contador() {
const [quantidade, setQuantidade] =
useState(0);
return (
<section>
<p>Quantidade: {quantidade}</p>
<button
onClick={() =>
setQuantidade(q => q + 1)
}
>
Adicionar
</button>
</section>
);
}
export default Contador;
Como funciona:
useState(0)cria um estado inicial com o valor zero.quantidadecontém o valor atual.setQuantidadeé a função utilizada para solicitar a mudança do estado.onClickdefine o que acontece quando o usuário clica no botão.q => q + 1calcula o próximo valor a partir do valor anterior.
Quando o estado muda, o React agenda uma nova renderização do componente. Isso permite atualizar o número mostrado na tela.
Importante: não altere diretamente o estado, por exemplo, usando quantidade++. Utilize a função de atualização, como setQuantidade, para que o React consiga acompanhar a mudança.
10. Como evitar erros comuns ao criar componentes
Erro 1 — Começar o nome do componente com letra minúscula
Errado:
function saudacao() {
return <h1>Olá!</h1>;
}
Correto:
function Saudacao() {
return <h1>Olá!</h1>;
}
O React interpreta elementos com nomes iniciados por letra minúscula como elementos HTML conhecidos ou personalizados. Para identificar um componente React, utilize a inicial maiúscula.
Erro 2 — Esquecer de retornar o JSX
Errado:
function Mensagem() {
<h1>Olá!</h1>;
}
Correto:
function Mensagem() {
return <h1>Olá!</h1>;
}
Sem um retorno, a função não entrega a estrutura JSX esperada para exibição. Em componentes que utilizam chaves no corpo da função, lembre-se de escrever return.
Erro 3 — Esquecer de importar o componente
Se você criou Saudacao.jsx em um arquivo separado, precisa importá-lo corretamente no arquivo que o utiliza. Confira o caminho, a extensão quando necessária e o tipo de exportação.
Erro 4 — Escrever HTML incorretamente no JSX
Em JSX, elementos que não possuem conteúdo interno precisam ser fechados. Por exemplo, use <img /> e <input />. Além disso, normalmente utilizamos className para definir classes CSS.
Erro 5 — Enviar uma prop com tipo inadequado
Se um componente espera um número para realizar cálculos, evite enviar esse valor como texto sem fazer a conversão necessária. Tipos diferentes podem provocar resultados inesperados.
11. Boas práticas para organizar seus componentes
- Escolha nomes claros: prefira
CartaoProdutoa nomes genéricos comoCoisa. - Reutilize estruturas: se vários elementos possuem a mesma estrutura, avalie se vale a pena criar um componente.
- Separe responsabilidades: componentes pequenos e bem definidos costumam ser mais fáceis de entender e manter.
- Utilize props: passe os dados que mudam de uma utilização para outra.
- Utilize state quando necessário: informações que mudam durante a interação podem ser guardadas no estado do React.
- Organize os arquivos: separe componentes em arquivos quando isso facilitar a leitura do projeto.
- Evite duplicação desnecessária: não copie e cole grandes blocos de JSX quando uma estrutura reutilizável resolver o problema.
- Teste os componentes: verifique se eles funcionam com diferentes valores e situações.
Uma dica de profissional: não transforme cada linha de JSX em um componente separado sem necessidade. Crie componentes quando houver uma estrutura reutilizável, uma responsabilidade clara ou uma parte da interface que mereça ser organizada individualmente.
12. Exercício prático: crie um cartão de estudante
Agora é sua vez. Você vai criar um componente chamado CartaoEstudante, capaz de mostrar o nome e a linguagem de programação que uma pessoa está aprendendo.
Objetivo do exercício:
- Criar um arquivo chamado
CartaoEstudante.jsx. - Criar uma função chamada
CartaoEstudante. - Receber duas props:
nomeelinguagem. - Mostrar essas informações em um título e em um parágrafo.
- Utilizar o componente duas vezes com dados diferentes.
function CartaoEstudante({ nome, linguagem }) {
return (
<article>
<h2>{nome}</h2>
<p>
Está aprendendo {linguagem}.
</p>
</article>
);
}
export default CartaoEstudante;
import CartaoEstudante from "./CartaoEstudante";
function App() {
return (
<main>
<CartaoEstudante
nome="Ana"
linguagem="JavaScript"
/>
<CartaoEstudante
nome="Pedro"
linguagem="Python"
/>
</main>
);
}
export default App;
Ana
Está aprendendo JavaScript.
Pedro
Está aprendendo Python.
Observe como o mesmo componente consegue representar estudantes diferentes. Essa é uma das ideias mais importantes do React: construir partes reutilizáveis da interface e alimentá-las com informações diferentes.
13. Resumo: o que você aprendeu?
- Componentes: partes reutilizáveis de uma interface.
- Funções: uma maneira comum de declarar componentes React.
- JSX: sintaxe que permite descrever interfaces dentro do JavaScript.
- Export e import: recursos para compartilhar componentes entre arquivos.
- Props: informações recebidas de quem utiliza o componente.
- Children: conteúdo colocado entre as etiquetas de abertura e fechamento de um componente.
- CSS: recurso para personalizar a aparência dos elementos.
- State: dados que podem mudar durante a utilização da aplicação.
Para continuar aprendendo, pratique criando componentes para botões, cartões, perfis, menus e formulários. Depois, experimente combinar esses componentes para montar uma página completa.
14. Conclusão
Criar componentes no React JS é uma habilidade fundamental para desenvolver interfaces organizadas, reutilizáveis e fáceis de manter. O segredo é começar com estruturas simples, entender como as funções retornam JSX e aprender a passar informações utilizando props.
Primeiro, crie um componente que mostre uma mensagem. Depois, transforme-o em um componente que recebe informações. Por fim, combine diferentes componentes para construir uma aplicação maior.
Você não precisa aprender tudo de uma vez. Cada componente que você cria é uma oportunidade de entender melhor como o React funciona.
Quer ampliar seus conhecimentos em programação?
Se você deseja continuar estudando desenvolvimento de software, conheça o curso Torne-se um Programador Fullstack e domine o mercado digital! e confira se o conteúdo combina com seus objetivos de aprendizado.
Antes de se inscrever, consulte a página do curso para verificar o programa, as tecnologias ensinadas, os requisitos e as condições disponíveis.
Conhecer o curso →Transparência: este artigo contém um link de afiliado. Podemos receber uma comissão se você realizar uma compra por meio desse link, sem custo adicional para você. A recomendação não representa uma garantia de resultados.
Artigo educativo sobre React JS, componentes funcionais, JSX, props, children e organização de interfaces.
Comentários
Postar um comentário