0Pricing
React Academy · Aula

Utilitários React.Children

Use React.Children.map, count e toArray para manipular children com segurança.

Utilitários React.Children é uma aula grátis de React Academy no CoddyKit. Esta é a aula 2 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ê usará os utilitários de React.Children — map, count, toArray e forEach — para percorrer e transformar filhos com segurança, independentemente de quantos forem passados.

O problema com métodos diretos de vetor

Como `props.children` pode ser um único elemento, um vetor ou undefined, chamar `.map()` diretamente nele causará uma falha. Os utilitários de React.Children lidam com todos esses casos com segurança.
// Unsafe — crashes if children is a single element
children.map(c => ...);

// Safe
React.Children.map(children, c => ...);

React.Children.map

Funciona como `Array.prototype.map`, mas lida com segurança com um único filho, vários filhos e null/undefined. Retorna um vetor de elementos clonados (ou o que quer que a função de retorno retorne).
function List({ children }) {
  return (
    <ul>
      {React.Children.map(children, (child, i) => (
        <li key={i}>{child}</li>
      ))}
    </ul>
  );
}

React.Children.count

`React.Children.count(children)` retorna o número de filhos, contando corretamente elementos únicos como 1 e null/undefined como 0.
function RequiresTwo({ children }) {
  if (React.Children.count(children) !== 2) {
    throw new Error('Exactly two children required');
  }
  return <div>{children}</div>;
}

React.Children.toArray

Converte os filhos em um vetor plano com chaves estáveis. Isso permite ordenar, usar filter ou slice nos filhos com métodos normais de vetor, sem se preocupar com aninhamento.
function Reversed({ children }) {
  const arr = React.Children.toArray(children);
  return <>{arr.reverse()}</>;
}

React.Children.forEach

É como `.map()`, mas não retorna um valor. Use-o quando quiser percorrer os filhos para executar efeitos colaterais, como validar os tipos ou criar uma tabela de consulta.
React.Children.forEach(children, child => {
  if (!React.isValidElement(child)) {
    console.warn('Non-element child found');
  }
});

React.Children.only

`React.Children.only(children)` garante que exista exatamente um elemento filho e o retorna. Gera uma exceção se não houver filhos ou se houver mais de um. É útil para impor APIs que aceitam um único filho.
function SingleChild({ children }) {
  const child = React.Children.only(children);
  return React.cloneElement(child, { 'data-wrapped': true });
}

Validando tipos de filhos

Combine `React.Children.forEach` e `React.isValidElement` com o tipo do filho para garantir que apenas tipos específicos de componentes sejam passados como filhos.
React.Children.forEach(children, child => {
  if (child.type !== TabPanel) {
    throw new Error('Only TabPanel children allowed');
  }
});

React.Children e Array.from

No React 18 ou posterior, os filhos podem ser uma árvore de elementos React que não é um vetor comum. Prefira sempre React.Children a Array.from para evitar casos extremos com elementos únicos e Fragmentos.

Alternativa moderna: achatar com toArray

Se precisar fazer transformações complexas, chame `React.Children.toArray(children)` primeiro para obter um vetor plano com chaves e, em seguida, aplique métodos comuns de vetor a ele.
const items = React.Children.toArray(children);
const first = items[0];
const rest = items.slice(1);

Verificação rápida

Qual método de React.Children lida com segurança com um único elemento, um vetor e filhos null/undefined — como Array.map, mas de forma robusta?

Recapitulação

Use React.Children.map para percorrer com segurança, count para verificar a quantidade, toArray para usar métodos de vetor, forEach para percorrer executando efeitos colaterais e only para garantir que exista exatamente um filho.

A seguir

Próxima lição: **Áreas nomeadas por meio de propriedades de objeto** — você implementará áreas de cabeçalho, corpo e rodapé passando JSX por meio de propriedades nomeadas.

Perguntas Frequentes

A aula “Utilitários React.Children” é grátis?

Sim — o texto completo de “Utilitários React.Children” é 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 “Utilitários React.Children”?

Use React.Children.map, count e toArray para manipular children com segurança. 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 2 de 4.

Quanto tempo leva a aula “Utilitários React.Children”?

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. Fundamentos de props.children
  2. Utilitários React.Children
  3. Slots nomeados por meio de props de objeto
  4. Clonagem e injeção de props com cloneElement
← Voltar para React Academy