← Voltar para o blog

Como evitar prop drilling no React

Prop drilling é um padrão comum em React onde você precisa passar dados através de múltiplos componentes intermediários para chegar ao componente que realmente precisa deles. Isso se torna problemático porque torna o código mais difícil de manter e reduz a reusabilidade dos componentes.

O Problema

Quando você tem uma hierarquia profunda de componentes e precisa passar dados do topo até o fundo, acaba tendo que passar props por todos os componentes do meio, mesmo que eles não usem esses dados.

Soluções

1. Componentes Intermediários

Crie componentes wrapper que recebem e encaminham props pela hierarquia. Isso pode organizar melhor a estrutura, mas não elimina completamente o problema.

2. React Context

Use a Context API do React para “passar dados para componentes aninhados sem ter que passar props manualmente em cada nível”. Esta é a solução mais comum e recomendada pelo próprio React.

const ThemeContext = React.createContext('light');

function App() {
  return (
    <ThemeContext.Provider value="dark">
      <Toolbar />
    </ThemeContext.Provider>
  );
}

3. React Hooks

Use hooks como useContext para acessar o contexto de forma simplificada:

function ThemedButton() {
  const theme = useContext(ThemeContext);
  return <Button theme={theme} />;
}

4. Bibliotecas de State Management

Implemente soluções externas como:

  • Zustand: Leve e simples
  • Jotai: Atomic state management
  • Recoil: Desenvolvido pelo Facebook

Cada uma oferece diferentes trade-offs entre complexidade e funcionalidades.

Quando usar cada solução?

  • Context: Para dados que muitos componentes precisam (tema, usuário autenticado, idioma)
  • State Management Libraries: Para aplicações complexas com muitos estados compartilhados
  • Props: Para componentes com hierarquia rasa ou dados usados por poucos componentes

Escolha a solução baseada na complexidade da sua aplicação. Nem sempre você precisa de uma biblioteca externa - muitas vezes Context é suficiente.