react-puro-19
  • React Puro - 19
  • code
    • README
    • README
    • README
    • README
    • README
    • README
    • README
    • README
  • 7-state-en-clases
    • Ejemplo inicial: un contador
    • Manejo de eventos
    • El state
    • Sintaxis limpia en Class Components
    • setState es Asincrónico
    • Fusión superficial vs profunda
  • 5-children
    • Personalizar Children antes de renderizar
    • PropTypes para Children
    • Los Children
    • Diferentes tipos de Children
    • Manejando uso Children
  • 13-hook-usereducer
    • Qué es un Reducer?
    • Un ejemplo más practico
    • Entonces, Redux murió?
  • 4-proptypes
    • Documentación y depuración incluida
    • PropTypes como documentación
    • Cómo validar, formas comunes
    • Ejemplo Tweet con PropTypes
  • 3-props
    • Comunicación con componentes Padre
    • Las Props:
    • Pasar Props
    • Recibir Props
    • Ejemplo Tweet con Props
  • 11-pensando-uso-state
    • "Tipos" de componentes
    • Qué colocar en el State
    • Dónde mantener el estado
    • Pensando declarativamente
  • 9-requests-api
    • Intro
    • Eligir libreria HTTP
    • Obtener datos y mostrarlos
  • 10-state-en-funciones
    • El useState Hook
    • Actualizar State basado en State anterior
    • State como un Array
    • Reglas de los Hooks
    • La "magia" de los Hooks
    • State como un Objeto
    • Intro Hooks
  • 15-api-context
    • Usando React API Context
    • Patrón "Slots"
    • Patrón "Render Props"
    • Intro API Context
    • Otros Patrones de Context
    • Ejemplo perforación de props
    • hook_usecontext
  • 8-ciclo-vida-componente
    • Fases
    • El ciclo
    • Manejo de errores
    • Desmontaje
    • Representación
    • Montaje
  • 14-hook-useeffect
    • Límite cuando se ejecuta un Effect
    • Hacer cambios visibles del DOM
    • Obtener datos (Fetch) con useEffect
    • Intro useEffect
    • Re-obtener datos (Re-Fetch) cuando cambian
    • Solo ejecución en montaje y desmontaje
  • 2-jsx
    • Ejemplo componente Tweet:
    • JSX:
    • Trabajando con JSX:
  • 12-controles-entrada
    • Entradas controladas
    • Entradas no controladas
  • 6-github-file-list
    • Parte 2: la Prop 'key'
    • Parte inicial
  • 1-hola_mundo
    • Hola mundo:
Con tecnología de GitBook
En esta página

¿Te fue útil?

  1. 5-children

Los Children

AnteriorPropTypes para ChildrenSiguienteDiferentes tipos de Children

Última actualización hace 5 años

¿Te fue útil?

Se ha visto cómo JSX admite anidación de componentes, al igual que HTML. Y que los componentes personalizados pueden aceptar props como argumentos, y usar esas props para representar contenido o pasar a componentes secundarios.

Hay una prop especial de la que aún no se ha hablado: se llama children.

Suponer que se desea crear un componente IconButton reutilizable que se vea así:

E imaginar usarlo así:

<IconButton> Do The Thing </IconButton>

¿Qué sucede a ese texto interno, "Do The Thing"? Bueno, ahí es donde entra la prop para children. Cuando React muestre IconButton, pasará todos sus subelementos (en este caso, el texto "Do The Thing") a IconButton como prop llamada children.

Los elementos secundarios se pasan automáticamente, pero no se muestran automáticamente en ningún lado. Se debe colocar explícitamente a los children en algún lugar de su componente. Si no se hace, serán ignorados. Por ejemplo, si el componente IconButton se ve así:

function IconButton() {
    return (
        <button>
        <i class="target-icon" />
        </button>
    );
}

El componente representado sería un botón con un icono y sin texto. Se vería así:

Con un pequeño ajuste, aceptando la prop de los children y luego insertándolo después del icono, los hijos pasados se mostrarán donde se indiquen:

function IconButton({ children }) {
    return (
        <button>
        <i class="target-icon" />
        {children}
        </button>
    );
}

Observar cómo Children está disponible como prop en IconButton a pesar de que no se paso explícitamente una prop llamada children. Esto se debe a que React pasa automáticamente el contenido de un componente como elemento secundario. Se puede lograr el mismo resultado usando IconButton pasando explícitamente la prop children, en su lugar:

<IconButton children={"Do The Thing"} ></IconButton>

Parece un poco antinatural, pero funciona. La convención es colocar a los children dentro de la etiqueta y no pasarlos explícitamente como props, pero se demuestra que los children se pueden usar como cualquier otra prop.

También se puede pasar JSX a una prop. Si se quisiera colocar el texto del botón en cursiva, se podría escribir de las siguientes maneras:

<IconButton children={ <em> Just Do It </em> } />

<IconButton>
    <em> Just Do It </em>
</IconButton>

También se puede pasar JSX a cualquier prop, no solo a “children”.

Como ejemplo, un componente de Confirmación que muestre un cuadro de diálogo con los botones Aceptar y Cancelar. Si se desea poder personalizar el título y el mensaje del cuadro de diálogo, escribirlo para aceptar el título y el mensaje como props separadas y luego usarlo así:

<Confirmation
    title={ <h1> Are you sure? </h1> }
    message={ <strong> Really really sure? </strong> }
/>
children
children