0Pricing
React Academy · Aula

Padrão de propriedades de renderização

Passe uma função como propriedade que retorne JSX para compartilhar comportamento sem acoplar a interface.

Padrão de propriedades de renderização é uma aula grátis de React Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.

Boas-vindas

Nesta lição, você entenderá o padrão de propriedades de renderização — passar uma função como propriedade que retorna JSX — e aprenderá quando ele é útil para compartilhar comportamento entre componentes.

O que são propriedades de renderização?

As propriedades de renderização são um padrão no qual um componente aceita uma propriedade que é uma função. O componente chama essa função para produzir sua saída renderizada. O consumidor controla a interface; o componente fornece o comportamento.
<DataProvider render={data => <UserCard user={data} />} />

Exemplo simples de propriedade de renderização

Um componente Toggle gerencia o estado aberto/fechado e chama uma propriedade de renderização com o estado atual e uma função de alternância. O consumidor decide como renderizar.
function Toggle({ render }) {
  const [on, setOn] = useState(false);
  return render(on, () => setOn(!on));
}

<Toggle render={(on, toggle) => (
  <button onClick={toggle}>{on ? 'Close' : 'Open'}</button>
)} />

Usando children como propriedade de renderização

Em vez de uma propriedade de renderização nomeada, você pode usar `children` como uma função. Muitas bibliotecas (React Router v5, Formik) usam esse padrão — às vezes chamado de “filhos como função”.
<Toggle>
  {(on, toggle) => (
    <div>
      {on && <Panel />}
      <button onClick={toggle}>Toggle</button>
    </div>
  )}
</Toggle>

Rastreador da posição do mouse

Um exemplo clássico de propriedades de renderização: um componente MouseTracker acompanha a posição do cursor e a passa para uma propriedade de renderização. Qualquer consumidor pode exibir a posição da maneira que preferir.
function MouseTracker({ children }) {
  const [pos, setPos] = useState({ x: 0, y: 0 });
  return (
    <div onMouseMove={e => setPos({ x: e.clientX, y: e.clientY })}>
      {children(pos)}
    </div>
  );
}

Propriedades de renderização versus ganchos personalizados

As propriedades de renderização eram o padrão preferido antes dos ganchos. Agora, os ganchos personalizados fazem a mesma coisa de forma mais simples: o gancho retorna dados e funções; o componente os usa em seu próprio JSX. Os ganchos são preferidos no React moderno.
// Old: render props
<Mouse render={pos => <p>{pos.x}</p>} />

// Modern: custom hook
const pos = useMouse();
<p>{pos.x}</p>

Quando as propriedades de renderização ainda fazem sentido

As propriedades de renderização ainda são úteis quando: (1) você precisa injetar uma renderização dinâmica em um local específico da árvore, (2) está criando uma biblioteca de componentes sem interface que separa a lógica da interface.

Aviso de desempenho

Definir uma propriedade de renderização em linha cria uma nova função a cada renderização do componente pai, impedindo que os componentes filhos PureComponent/React.memo interrompam a renderização. Extraia as funções de propriedade de renderização para uma variável ou método estável.
// Avoid: new function every render
<Toggle render={pos => <Dot pos={pos} />} />

// Better: stable reference
const renderDot = pos => <Dot pos={pos} />;
<Toggle render={renderDot} />

Compondo propriedades de renderização

Aninhar vários componentes com propriedades de renderização cria rapidamente o “inferno de propriedades de renderização” ou “inferno de componentes envolventes” — funções de retorno profundamente aninhadas e difíceis de ler. Essa é uma das razões pelas quais os ganchos foram introduzidos.

Propriedades de renderização em bibliotecas

O React Router v5 usava propriedades de renderização para Route. Downshift, Formik e React-Table também usam variações desse padrão. Entender as propriedades de renderização ajuda você a ler e depurar código que usa essas bibliotecas.

Verificação rápida

Qual é a principal vantagem do padrão de propriedades de renderização em relação à passagem de JSX estático?

Recapitulação

As propriedades de renderização passam uma função que retorna JSX. O componente fornece o comportamento; o consumidor fornece a interface. Prefira ganchos personalizados no React moderno, mas entenda as propriedades de renderização para ler código existente e criar componentes sem interface.

A seguir

Próxima lição: **Componentes de ordem superior (HOCs) explicados** — você envolverá componentes para injetar propriedades, proteger rotas ou adicionar registro.

Perguntas Frequentes

A aula “Padrão de propriedades de renderização” é grátis?

Sim — o texto completo de “Padrão de propriedades de renderização” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.

O que vou aprender em “Padrão de propriedades de renderização”?

Passe uma função como propriedade que retorne JSX para compartilhar comportamento sem acoplar a interface. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar React Academy?

Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Padrão de propriedades de renderização”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de React Academy?

Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Padrão de propriedades de renderização
  2. Componentes de ordem superior (HOCs) explicados
  3. HOC vs propriedades de renderização vs hooks personalizados
  4. Refatorando um HOC para um hook personalizado
← Voltar para React Academy