0Pricing
React Academy · Lección

Utilidades de React.Children

Utilice React.Children.map, count y toArray para manipular children de forma segura.

Utilidades de React.Children es una lección gratuita de React Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Bienvenida

En esta lección utilizará las utilidades de React.Children —map, count, toArray y forEach— para recorrer y transformar children de forma segura, independientemente de cuántos se pasen.

El problema de los métodos de array directos

Como `props.children` puede ser un único elemento, un array o undefined, llamar directamente a `.map()` provocará un error. Las utilidades de React.Children gestionan todos estos casos de forma segura.
// 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`, pero gestiona de forma segura un único child, varios children y null/undefined. Devuelve un array de elementos clonados (o lo que devuelva la función de callback).
function List({ children }) {
  return (
    <ul>
      {React.Children.map(children, (child, i) => (
        <li key={i}>{child}</li>
      ))}
    </ul>
  );
}

React.Children.count

`React.Children.count(children)` devuelve el número de children; cuenta correctamente los elementos individuales como 1 y 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

Convierte los children en un array plano con keys estables. Esto permite ordenar, filtrar o extraer fragmentos de children mediante métodos de array normales sin preocuparse por la anidación.
function Reversed({ children }) {
  const arr = React.Children.toArray(children);
  return <>{arr.reverse()}</>;
}

React.Children.forEach

Como `.map()`, pero no devuelve ningún valor. Utilícelo cuando quiera recorrer children para realizar efectos secundarios, como validar sus tipos o construir una tabla de consulta.
React.Children.forEach(children, child => {
  if (!React.isValidElement(child)) {
    console.warn('Non-element child found');
  }
});

React.Children.only

`React.Children.only(children)` afirma que hay exactamente un elemento child y lo devuelve. Genera un error si no hay ningún child o si hay más de uno. Resulta útil para exigir APIs con un único child.
function SingleChild({ children }) {
  const child = React.Children.only(children);
  return React.cloneElement(child, { 'data-wrapped': true });
}

Validar los tipos de los children

Combine `React.Children.forEach` y `React.isValidElement` con el tipo del child para exigir que solo se pasen determinados tipos de componentes como children.
React.Children.forEach(children, child => {
  if (child.type !== TabPanel) {
    throw new Error('Only TabPanel children allowed');
  }
});

React.Children frente a Array.from

En React 18 y versiones posteriores, children puede ser un árbol de elementos de React que no sea un array normal. Prefiera siempre React.Children a Array.from para evitar casos límite con elementos individuales y Fragments.

Alternativa moderna: aplanar con toArray

Si necesita realizar transformaciones complejas, llame primero a `React.Children.toArray(children)` para obtener un array plano con keys y, a continuación, aplíquele métodos de array normales.
const items = React.Children.toArray(children);
const first = items[0];
const rest = items.slice(1);

Comprobación rápida

¿Qué método de React.Children gestiona de forma segura un elemento individual, un array y children null/undefined, como Array.map pero de forma robusta?

Repaso

Utilice React.Children.map para recorrer de forma segura, count para comprobar la cantidad, toArray para usar métodos de array, forEach para recorrer realizando efectos secundarios y only para afirmar que hay exactamente un child.

A continuación

Siguiente lección: **Named Slots via Object Props**; implementará slots de encabezado, cuerpo y pie de página pasando JSX mediante props con nombre.

Preguntas frecuentes

¿La lección «Utilidades de React.Children» es gratis?

Sí — el texto completo de «Utilidades de React.Children» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Utilidades de React.Children»?

Utilice React.Children.map, count y toArray para manipular children de forma segura. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Utilidades de React.Children»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Fundamentos de props.children
  2. Utilidades de React.Children
  3. Slots con nombre mediante props de objeto
  4. Clonación e inyección de props con cloneElement
← Volver a React Academy