Entenda componentes reutilizáveis no React

Rocketseat

Rocketseat

3 min de leitura
componentes-e-propriedades-com-diego-fernandes
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.
Nuvem de palavras em formato do símbolo do React, com conceitos importantes para o desenvolvimento com React.
Nuvem de palavras em formato do símbolo do React, com conceitos importantes para o desenvolvimento com React.
📄
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:
Video preview

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.

Aprenda programação do zero e DE GRAÇA

No Discover você vai descomplicar a programação, aprender a criar seu primeiro site com a mão na massa e iniciar sua transição de carreira.

COMECE A ESTUDAR AGORA