Props en componentes react


Props en componentes react son un mecanismo para pasar datos de un componente padre a un componente hijo

Props en componentes react
oscar Escrito por oscar 22 April 2025 29 0

En React, los props (abreviatura de "properties") son un mecanismo para pasar datos de un componente padre a un componente hijo. Los props permiten que los componentes sean dinámicos y reutilizables, ya que pueden recibir información externa para personalizar su comportamiento o su presentación.

⏺️ Características clave de los props:

  • Inmutabilidad: Los props son solo de lectura en el componente hijo. El componente hijo no puede modificarlos directamente, pero puede usarlos para renderizar contenido o realizar lógica.
  • Datos unidireccionales: Los props siguen el flujo de datos unidireccional, es decir, siempre se pasan del componente padre al componente hijo.
  • Personalización: Permiten que un componente hijo sea más flexible y personalizable al recibir diferentes valores de un componente padre.

Prerrequisitos

📜 ¿Cómo se usan los props en React?

Para entender como usar los props, vamos a realizar el siguiente ejemplo:

1️⃣​ Procedemos a crear un proyecto react como lo realizamos en Instalar React

npm create vite@latest

Donde seleccionamos:

> npx
> create-vite
|
o  Project name:
|  practicas-react
|
o  Select a framework:
|  React
|
o  Select a variant:
|  TypeScript

Por ultimo, ejecutamos

cd practicas-react
npm install
npm run dev

Vamos a crear un directorio llamado components en el directorio src donde vamos a realizar lo siguiente

2️⃣ Crearemos el siguiente componente Parent.tsx dentro de components, en donde vamos a pasar los props como atributos en el tsx

export default function Parent() {
  return (
    <div>
      <Child name="Juan" age={30} />
    </div>
  )
}

Ahora crearemos el componente Child.tsx el cual recibirá los props como un objeto, estos se pueden acceder directamente dentro del componente como parámetros de la función o como propiedades del objeto props:

export default function Child(props) {
  return (
    <div>
      <p>Mi nombre es {props.name} y tengo {props.age} años.</p>
    </div>
  );
}

O utilizando la desestructuración de objetos para hacer que el código sea más limpio:

export default function Child({ name, age }:{ name: string, age:number }) {
  return (
    <div>
      <p>Mi nombre es {name} y tengo {age} años.</p>
    </div>
  );
}

Colocamos en App.tsx el componente Parent.tsx y comprobamos en el navegador que se visualice la información.

import './App.css'
import Child from './components/Child'

function App() {
  
  return (
    <div>
      <h1>Bienvenido a mi aplicación</h1>
      <Child name="Juan" age={30}/>
    </div>
  )
}

export default App
props en componentes
props en componentes

¿Cómo organizar los props en un proyecto de React?

La organización de los props depende de la complejidad de tu aplicación y del diseño de los componentes.

⏺️ Uso de la Desestructuración

Cuando pasas muchos props a un componente, puedes desestructurarlos directamente en la función del componente para hacerlo más limpio y legible.

function Card({ title, description, imageUrl }) {
  return (
    <div className="card">
      <img src={imageUrl} alt={title} />
      <h2>{title}</h2>
      <p>{description}</p>
    </div>
  );
}

⏺️ Definición de propTypes para validación

Si tienes componentes complejos o un equipo de trabajo, puedes usar la librería prop-types para definir los tipos y la obligatoriedad de los props, lo que ayuda a la documentación y el debugging.

import PropTypes from 'prop-types';

function Card({ title, description, imageUrl }) {
  return (
    <div className="card">
      <img src={imageUrl} alt={title} />
      <h2>{title}</h2>
      <p>{description}</p>
    </div>
  );
}

Card.propTypes = {
  title: PropTypes.string.isRequired,
  description: PropTypes.string.isRequired,
  imageUrl: PropTypes.string.isRequired,
};

⏺️ Utilizar defaultProps para valores por defecto

Si algunos props no se pasan desde el componente padre, puedes usar defaultProps para asignarles un valor por defecto.

Card.defaultProps = {
  title: 'Título por defecto',
  description: 'Descripción por defecto',
  imageUrl: 'https://via.placeholder.com/150',
};

⏺️ Evitar pasar demasiados props

Si un componente hijo recibe una cantidad muy grande de props, es posible que esté manejando demasiadas responsabilidades. En ese caso, sería una buena práctica mover parte de esa lógica a un componente más pequeño o considerar el uso de Context API o Redux para manejar el estado global.

⏺️ Agrupar props relacionados en un objeto

Si varios props están relacionados, puedes pasarlos como un objeto para hacer el código más limpio. Esto puede ser útil cuando trabajas con muchos datos en un solo componente.

⏺️ Pasar funciones como props

Puedes pasar funciones como props a los componentes hijos para manejar eventos o actualizar el estado del componente padre. Esto es útil para la comunicación entre componentes padres e hijos.

function Parent() {
  const handleClick = () => {
    console.log('¡Botón clickeado!');
  };
  return <Child onClick={handleClick} />;
}

function Child({ onClick }) {
  return <button onClick={onClick}>Haz clic aquí</button>;
}

 


Comentario

Debe aceptar antes de enviar