¿Cómo se comunican los componentes? Props y atributos

Clase 4 de 34Curso de React.js

Resumen

¿Cómo utilizar las props para comunicar componentes en React?

En el desarrollo de aplicaciones, es común que los componentes necesiten comunicarse y compartir información. React nos ofrece una solución simple y efectiva para lograrlo, denominada "props". Este recurso permite que los componentes presenten datos dinámicos, en lugar de contenido estático o "hardcoded". Pero, ¿cómo funcionan exactamente y cómo las implementamos?

¿Qué son las props y cómo se implementan?

Las props (propiedades) son similares a los parámetros en funciones, pero aplicadas a componentes. Se envían como atributos en el JSX:

<TodoCounter completed={16} total={25} />

Aquí, TodoCounter recibe dos props: completed y total. Estas se accesan en el componente mediante la destructuración:

const TodoCounter = ({ completed, total }) => (
  <h1>Has completado {completed} de {total} todos</h1>
);

¿Cómo se utilizan las props para incrementar la reutilización?

Un componente que acepta props se vuelve más reutilizable, ya que se adapta a distintos datos sin modificar su estructura base:

<TodoCounter completed={8} total={10} />
<TodoCounter completed={3} total={5} />

Con esto, un mismo componente es capaz de mostrar diferentes resultados de acuerdo a las props que recibe.

¿Qué es la prop children y cómo se usa?

La prop children es una propiedad especial que automáticamente encapsula todo lo que está entre las etiquetas de apertura y cierre de un componente:

<TodoList>
  <TodoItem ... />
  <TodoItem ... />
</TodoList>

React convierte automáticamente el contenido en la prop children, que podemos utilizar dentro de nuestro componente:

const TodoList = ({ children }) => (
  <ul>{children}</ul>
);

React Fragments: ¿Cómo evitar elementos innecesarios?

React Fragments (<React.Fragment>) permiten retornar múltiples elementos sin producir nodos extra en el DOM. Es útil para no llenar nuestro HTML de div innecesarios y puede verse así:

return (
  <React.Fragment>
    <Header />
    <MainContent />
    <Footer />
  </React.Fragment>
);

De este modo, se mantiene una estructura limpia y clara en el DOM.

Renderización de arrays y property key

Cuando trabajamos con listas, es esencial proporcionar una prop key única para cada elemento. Esto facilita la eficiencia y orden del sistema de renderizado de React:

const todos = defaultTodos.map((todo, index) => (
  <TodoItem key={index} text={todo.text} completed={todo.completed} />
));

Aquí, nos aseguramos de que cada TodoItem tenga una key única, usando un índice o algún identificador único relevante.

¿Por qué es necesaria la key?

La key ayuda a React a identificar qué elementos han cambiado, añadido o eliminado. Esto optimiza la actualización de listas y es una práctica recomendada para evitar advertencias en la consola y mejorar el rendimiento de la aplicación.

Convertir información estática en dinámica con props

Las props transforman componentes con datos estáticos en entidades dinámicas y personalizables. Este uso, combinado con herramientas como React Fragments y la renderización mediante arrays, proporciona un marco flexible y poderoso para el desarrollo de aplicaciones React. Con práctica, podrás crear interfaces de usuarios dinámicas y eficientes.

¿Qué sigue después de manejar las props?

Una vez dominadas las props, el siguiente paso es personalizar el aspecto de tu aplicación con CSS. Aprende a combinar React y estilos CSS para llevar tus interfaces cerca del diseño original. ¡Continúa explorando y prueba nuevas técnicas para enriquecer tus habilidades en React!