Entenda componentes reutilizáveis no React

Rocketseat

Navegação Rápida:
Faaala dev! Já se viu naquela situação de copiar e colar o mesmo card, botão ou formulário em várias partes da sua aplicação React? E a dor de cabeça na hora de atualizar o estilo ou a lógica em todos esses lugares? Calma, você não está sozinho! Existe um princípio fundamental no React que não só resolve isso, mas também eleva a qualidade do seu código a outro nível: os componentes reutilizáveis.
Neste artigo, vamos mergulhar fundo nesse conceito, entender por que ele é crucial e como você pode começar a criar seus próprios componentes reutilizáveis para codar de forma mais inteligente e produtiva.

Se você ainda está começando sua jornada no React, aproveite para conferir nosso Guia Prático de React 2024 e entenda melhor os conceitos fundamentais antes de avançar aqui.
O que são componentes reutilizáveis?
Imagine componentes React como peças de Lego: blocos que você usa para construir interfaces complexas de maneira simples e eficiente. Componentes reutilizáveis são peças especialmente projetadas para serem usadas múltiplas vezes, em diferentes contextos, sem a necessidade de reescrever o mesmo código. Eles encapsulam aparência (JSX/CSS) e comportamento (lógica/estado), ajudando você a seguir o princípio DRY (Don't Repeat Yourself).
Esses componentes podem ser desde elementos simples, como um ícone, até elementos complexos, como um card completo de perfil do usuário.
Quer entender ainda melhor? Confira este vídeo:

Por que usar componentes reutilizáveis?
Vamos conferir os benefícios práticos:
- Adeus, retrabalho doloroso!
- Altere em um único lugar e veja a mágica acontecer na aplicação toda. Precisou corrigir um bug em um botão usado 10 vezes? Fácil, edite apenas o componente original.
- Sua aplicação com estilo profissional!
- Garanta consistência visual e funcional em toda sua UI, mantendo alinhada a identidade visual e comportamental da sua aplicação.
- Codando na velocidade da luz!
- Construa telas novas rapidamente, reutilizando componentes que já foram criados por você ou pela sua equipe.
- Organização que dá gosto de ver!
- Código mais limpo, organizado e fácil de entender, com responsabilidades bem definidas para cada componente.
- Testes unitários sem sofrimento!
- Componentes menores e focados são mais fáceis de testar individualmente, garantindo robustez e qualidade.
Mão na massa: criando componentes reutilizáveis
Agora que você já entendeu a importância dos componentes reutilizáveis, vamos colocar a mão no código! Preparei exemplos práticos para clarear ainda mais o conceito e te ajudar a começar a construir interfaces mais escaláveis.
Exemplo 1: componente <Button>
simples
Componentes são a base do React. Eles funcionam como pequenos blocos que juntos constroem toda a interface.
Vamos começar com um botão básico, mas poderoso:
// src/components/Button.tsx import './styled.css'; export function Button({ text, onClick }) { return ( <button className="button" onClick={onClick}> {text} </button> ); }
O que está acontecendo aqui?
text
: prop que define o texto exibido dentro do botão.
onClick
: prop que define o que acontece quando o botão é clicado.
Você pode reutilizar esse botão em qualquer lugar da aplicação apenas mudando o texto ou o comportamento de clique, como neste exemplo:
<Button text="Botão 1" onClick={() => handleClick('Botão 1')} />
Assim, cada botão que você precisar na aplicação usa o mesmo componente base, sem repetição de código!
Quer ver esse exemplo funcionando na prática? Acesse o projeto no StackBlitz e teste você mesmo!
Exemplo 2: componente <Alert>
com children
e evento de fechamento
Agora, vamos criar um componente um pouco mais flexível: um
Alert
que recebe qualquer conteúdo (texto, emoji, links, etc.) através do children
e ainda permite que o usuário feche o alerta.// src/components/Alert.tsx import type { ReactNode } from 'react'; import './styled.css'; interface AlertProps { children: ReactNode; onClose: () => void; } export function Alert({ children, onClose }: AlertProps) { return ( <div className="alert"> <span>{children}</span> <button className="close-btn" onClick={onClose}> × </button> </div> ); }
O que esse componente faz?
- Recebe
children
, permitindo que qualquer conteúdo seja exibido dentro do alerta.
- Recebe a função
onClose
, que é chamada ao clicar no botão "×", fechando o alerta.
Um exemplo prático de uso seria:
<Alert onClose={() => setShowAlert(false)}> Atenção: Não se esqueça de salvar suas alterações! </Alert>
E você ainda pode personalizar o que exibe dentro do alerta:
<Alert onClose={() => setShowAlert(false)}> ✅ Alterações salvas com sucesso! </Alert>
Com isso, um único componente é capaz de atender diversos cenários — sem precisar duplicar o código!
Quer experimentar este exemplo na prática? Acesse o projeto no StackBlitz e teste você mesmo!
Boas práticas para componentes reutilizáveis
Siga estas dicas para garantir componentes de alta qualidade:
- Pense genérico: evite lógica específica demais, favorecendo a reutilização.
- Mantenha simples: um componente, uma responsabilidade.
- Aposte nas props: configure seu componente para variações.
- Abuse do
children
: essencial para componentes de layout.
- Separe lógica de apresentação: componentes UI devem ser simples.
- Documente o essencial: utilize TypeScript e Storybook para documentação.
- Consistência é rei: padronize estilos e nomenclatura.
Quer dominar react de verdade? Seu próximo nível começa aqui!
Viu como componentes reutilizáveis podem revolucionar sua maneira de desenvolver? Este é apenas o começo. Na Formação em React da Rocketseat, você mergulha em tudo o que precisa para se tornar um desenvolvedor front-end completo: React, TypeScript, Next.js, Node.js, TailwindCSS, e mais de 15 projetos práticos, tudo com o suporte personalizado da nossa equipe e a força da maior comunidade dev da América Latina.
Conclusão
Agora você tem o conhecimento para criar componentes reutilizáveis incríveis! Coloque tudo em prática e sinta a evolução na qualidade do seu código. A jornada dev é aprendizado contínuo, então não pare nunca de codar e evoluir!
FAQ
- O que é um componente reutilizável em React?
R: É um bloco de código que pode ser usado em diferentes partes da aplicação sem duplicação, promovendo reuso, consistência e manutenção mais fácil.
- Quais são as vantagens de usar componentes reutilizáveis?
R: Ganho de produtividade, consistência visual, menos retrabalho e um código mais organizado e fácil de manter.
- Como criar um componente reutilizável em React?
R: Definindo um componente genérico que recebe
props
para ser personalizado, evitando lógica rígida e favorecendo o reuso em diferentes contextos.Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.