0Pricing
React Academy · Aula

Slots nomeados por meio de props de objeto

Implemente slots de cabeçalho, corpo e rodapé passando JSX por props nomeadas.

Slots nomeados por meio de props de objeto é uma aula grátis de React Academy no CoddyKit. Esta é a aula 3 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ê implementará áreas nomeadas flexíveis passando JSX por meio de propriedades nomeadas, permitindo criar componentes de layout com regiões de cabeçalho, corpo e rodapé sem uma estrutura rígida de filhos.

A limitação de children

Uma única propriedade `children` funciona para uma região. Quando um componente precisa de várias regiões de conteúdo independentes (como um cartão com cabeçalho e rodapé), propriedades nomeadas que carregam JSX são a solução mais clara.

Áreas em propriedades nomeadas

Defina uma propriedade para cada área na interface do componente. O pai passa JSX para cada propriedade. O componente renderiza cada área na posição correta.
function Card({ header, body, footer }) {
  return (
    <div className="card">
      <div className="card-header">{header}</div>
      <div className="card-body">{body}</div>
      <div className="card-footer">{footer}</div>
    </div>
  );
}

// Usage
<Card
  header={<h2>Title</h2>}
  body={<p>Content here</p>}
  footer={<button>OK</button>}
/>

Áreas opcionais

Torne as áreas opcionais renderizando-as somente quando a propriedade for avaliada como verdadeira. Assim, o mesmo componente pode funcionar com ou sem um rodapé, por exemplo.
function Card({ header, children, footer }) {
  return (
    <div>
      {header && <div className="header">{header}</div>}
      <div className="body">{children}</div>
      {footer && <div className="footer">{footer}</div>}
    </div>
  );
}

Combinando filhos e áreas nomeadas

Use `children` para a região de conteúdo principal e propriedades nomeadas para as regiões secundárias. Isso segue o princípio de que o caso de uso mais comum deve ser o mais prático.
<Dialog
  title="Confirm"
  actions={<><button>Cancel</button><button>OK</button></>}
>
  <p>Are you sure?</p>  {/* children = primary slot */}
</Dialog>

TypeScript: tipando áreas nomeadas

Tipifique as propriedades de áreas nomeadas como `React.ReactNode` para aceitar qualquer conteúdo JSX.
interface CardProps {
  header?: React.ReactNode;
  children: React.ReactNode;
  footer?: React.ReactNode;
}

Áreas nomeadas e componentes compostos

As propriedades nomeadas são simples e explícitas. Componentes compostos (como ``) são mais práticos para famílias de componentes complexas, mas exigem mais configuração com Contexto. Comece com propriedades nomeadas e migre se necessário.

Passando componentes como áreas

Você também pode tipar uma área como um componente React, e não como JSX. O pai passa uma referência de componente, e o layout a renderiza. Assim, o layout controla quando e quantas vezes a área será renderizada.
function Timeline({ renderItem, items }) {
  return (
    <ul>
      {items.map(item => (
        <li key={item.id}>{renderItem(item)}</li>
      ))}
    </ul>
  );
}

<Timeline
  items={data}
  renderItem={item => <EventCard event={item} />}
/>

Composição de layout com áreas nomeadas

Os componentes de layout de páginas usam áreas nomeadas extensivamente. Um componente de estrutura de página com áreas `sidebar`, `toolbar` e `content` permite que páginas diferentes componham a mesma estrutura com conteúdos completamente diferentes em cada região.

Documentando áreas nomeadas

As áreas nomeadas são autoexplicativas por meio de interfaces do TypeScript ou PropTypes. Os consumidores conseguem ver exatamente quais áreas estão disponíveis e quais são opcionais, reduzindo a necessidade de documentação externa.

Verificação rápida

Qual tipo do TypeScript você deve usar para uma propriedade de área nomeada que aceita qualquer JSX?

Recapitulação

As propriedades de áreas nomeadas tornam os componentes de layout flexíveis e autoexplicativos. Use children para a região principal, propriedades nomeadas para as regiões secundárias e tipifique-as como React.ReactNode.

A seguir

Próxima lição: **Clonando e injetando propriedades com cloneElement** — você usará React.cloneElement para passar propriedades ocultas do pai para os filhos.

Perguntas Frequentes

A aula “Slots nomeados por meio de props de objeto” é grátis?

Sim — o texto completo de “Slots nomeados por meio de props de objeto” é 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 “Slots nomeados por meio de props de objeto”?

Implemente slots de cabeçalho, corpo e rodapé passando JSX por props nomeadas. 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 3 de 4.

Quanto tempo leva a aula “Slots nomeados por meio de props de objeto”?

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