Saltar al contenido
Curso de React
Todos los cursos Ir al ejercicio →

Componentes y props

  • ⏱ 45 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Pasar datos a un componente con props de cualquier tipo.
  • Desestructurar props y definir valores por defecto.
  • Crear componentes contenedor con children.
  • Entender por qué las props son de solo lectura.

1.Props: los datos que recibe un componente

Un componente que siempre muestra lo mismo sirve de poco. Para que una misma pieza muestre datos distintos usamos las props (de *properties*, «propiedades»): información que el componente padre le pasa al hijo, igual que los atributos de una etiqueta HTML.

⚛️ Tu primera prop
Consola

React reúne todas las props en un único objeto que recibe como primer parámetro la función. Por eso se escribe props.nombre. El mismo componente Saludo produce tres resultados distintos.

2.Desestructurar: la forma habitual

Escribir props. en cada línea cansa. Lo habitual es desestructurar el objeto en la propia lista de parámetros (lo viste en el curso de JavaScript):

⚛️ Props desestructuradas y valores por defecto
Consola

3.Qué se puede pasar como prop

TipoCómo se pasaEjemplo
Textocomillastitulo="Mi curso"
Númerollavesprecio={25}
Booleanollaves o presenciaactivo={true} · activo
Arrayllavesetiquetas={["css", "html"]}
Objetollaves doblesautor={{ nombre: "Ana" }}
FunciónllavesonGuardar={guardar}
JSXllavesicono={<Estrella />}
⚛️ Distintos tipos de props
Consola

4.La prop especial children

A veces quieres pasar a un componente otros elementos dentro de sus etiquetas, igual que haces con un <div> en HTML. Todo lo que pongas entre la etiqueta de apertura y de cierre llega como la prop children:

⚛️ Componentes contenedor con children
Consola

💡 Consejo · Composición antes que herencia

React favorece componer piezas pequeñas: una Caja que acepta children, una Pagina que contiene una Cabecera y un Contenido… Es la forma más flexible de reutilizar interfaz sin repetir código.

5.Las props son de solo lectura

Un componente nunca debe modificar sus propias props. Piensa en ellas como los argumentos de una función pura: mismos datos de entrada, misma pantalla. Si necesitas algo que cambie con el tiempo, usarás estado (lección 4).

❌ Nunca hagas esto
function Contador({ valor }) {
  valor = valor + 1;        // ❌ no modifiques las props
  return <p>{valor}</p>;
}
✅ Calcula un valor nuevo
function Contador({ valor }) {
  const siguiente = valor + 1;   // ✅ un valor derivado
  return <p>{siguiente}</p>;
}

📌 Nota · El flujo de datos

Los datos bajan de padres a hijos mediante props: es un flujo en una sola dirección. Esto hace que sea fácil saber de dónde sale cada dato cuando algo falla.

6.Organizar: un componente por archivo

En un proyecto real, cada componente suele vivir en su propio archivo y se importa donde se necesita. Esta es la estructura típica:

src/components/Tarjeta.jsx
export default function Tarjeta({ titulo, children }) {
  return (
    <article className="tarjeta">
      <h2>{titulo}</h2>
      {children}
    </article>
  );
}
src/App.jsx
import Tarjeta from "./components/Tarjeta.jsx";

export default function App() {
  return (
    <Tarjeta titulo="Hola">
      <p>Contenido de la tarjeta</p>
    </Tarjeta>
  );
}

📌 Nota · En los editores del curso

Aquí todos los componentes caben en un solo cuadro de código, para que puedas ver todo junto. En Vite los separarás con import y export, como arriba.

7.Errores frecuentes

📒 Apuntes para llevar

  • Las props son los datos que un componente padre pasa a un hijo; llegan como un objeto en el primer parámetro.
  • Se desestructuran en los parámetros: function Perfil({ nombre, rol = "Estudiante" }).
  • Texto con comillas; todo lo demás con llaves: edad={28}, activo={true}, etiquetas={[…]}.
  • children contiene lo que se escribe entre las etiquetas del componente.
  • Las props son de solo lectura: no las modifiques; calcula valores derivados.
  • Los datos fluyen en una dirección: de padre a hijo.
  • Un componente por archivo, con export default e import.

8.Glosario

TérminoSignificado
PropDato que un componente padre pasa a un hijo, como un atributo.
childrenProp especial con el contenido escrito entre las etiquetas del componente.
DesestructuraciónSacar propiedades de un objeto en variables: { nombre, edad }.
Valor por defectoValor que se usa si la prop no se envía: rol = "Estudiante".
ComposiciónConstruir interfaces combinando componentes pequeños.
Componente padre / hijoEl padre usa al hijo dentro de su JSX y le pasa props.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Cómo recibe un componente las props?

¿Cómo pasas el número 25 como prop precio?

¿Qué contiene children?

¿Qué debes hacer con una prop dentro del componente?

¿Qué hace <Perfil nombre="Ana" /> si Perfil tiene rol = "Estudiante" y no se pasa rol?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio