Props
Pasar datos a los componentes con props
Que son los Props?
Props (abreviatura de "properties") son la forma de pasar datos de un componente padre a un componente hijo. Son como los argumentos de una funcion—permiten que los componentes sean dinamicos y reutilizables.
Pasando Props
// Componente padre pasando props
function App() {
return (
<div>
<Saludo nombre="Maria" edad={25} />
<Saludo nombre="Juan" edad={30} />
</div>
);
}
// Componente hijo recibiendo props
function Saludo(props) {
return (
<div>
<h1>Hola, {props.nombre}!</h1>
<p>Tienes {props.edad} anios.</p>
</div>
);
}
Destructuring de Props
// Destructuring en los parametros (preferido)
function Saludo({ nombre, edad }) {
return (
<div>
<h1>Hola, {nombre}!</h1>
<p>Tienes {edad} anios.</p>
</div>
);
}
// O destructuring en el cuerpo
function Saludo(props) {
const { nombre, edad } = props;
return (
<div>
<h1>Hola, {nombre}!</h1>
<p>Tienes {edad} anios.</p>
</div>
);
}
Props por Defecto
function Saludo({ nombre = "Invitado", edad = 0 }) {
return (
<div>
<h1>Hola, {nombre}!</h1>
<p>Tienes {edad} anios.</p>
</div>
);
}
// Uso
<Saludo /> // Muestra: Hola, Invitado! Tienes 0 anios.
<Saludo nombre="Ana" /> // Muestra: Hola, Ana! Tienes 0 anios.
Children Props
// El prop children contiene lo que esta entre las etiquetas
function Tarjeta({ children, titulo }) {
return (
<div className="tarjeta">
<h2>{titulo}</h2>
<div className="contenido">
{children}
</div>
</div>
);
}
// Uso
function App() {
return (
<Tarjeta titulo="Mi Tarjeta">
<p>Este es el contenido de la tarjeta.</p>
<button>Accion</button>
</Tarjeta>
);
}
Spread de Props
function App() {
const datosUsuario = {
nombre: "Carlos",
edad: 28,
email: "carlos@ejemplo.com"
};
return <PerfilUsuario {...datosUsuario} />;
}
// Equivalente a:
// <PerfilUsuario nombre="Carlos" edad={28} email="carlos@ejemplo.com" />
Los Props son de Solo Lectura
Los componentes nunca deben modificar sus props. Los props fluyen hacia abajo (del padre al hijo) y son inmutables. Si necesitas datos que cambien, usa el estado (state).