Composición y Colocación de Estado en React con Patrones de Renderización
Clase 4 de 19 • Curso de React.js: Patrones de Render y Composición
Resumen
¿Cómo llevar la teoría de React a la práctica?
Para profundizar en React, es crucial pasar de la teoría a la práctica. Esto implica aplicar principios como la composición de componentes y la colocación del estado en escenarios reales. Para facilitar este aprendizaje, puedes trabajar con un repositorio específico llamado "curso React Patrones Render" en la comunidad de Platzi. Es importante recordar que comenzamos con los commits heredados del curso anterior llamado "Inicio del curso de patrones de render". Si deseas replicar este entorno, solo tienes que instalar las dependencias con npm install
y ejecutar el servidor de desarrollo con npm start
.
¿Cómo estructurar componentes usando componentes falsos?
Antes de sumergirte en la estructura real del código, es útil experimentar con componentes falsos que te permiten visualizar cómo debería organizarse la aplicación. Esto se logra comentando temporalmente el componente principal (App
) y creando componentes básicos que imitan la estructura general deseada.
Aquí un ejemplo básico de cómo podrías estructurarlos:
function App() {
return (
<React.Fragment>
<ToDoHeader />
<ToDoList />
</React.Fragment>
);
}
function ToDoHeader() {
return (
<React.Fragment>
<ToDoCounter />
<ToDoSearch />
</React.Fragment>
);
}
function ToDoList() {
return (
<React.Fragment>
<ToDoItem />
</React.Fragment>
);
}
¿Cómo se maneja el estado en una aplicación React de manera óptima?
En React, compartir el estado entre los componentes puede complicarse si no se maneja correctamente. Tradicionalmente, los estados y sus actualizadores se pasan por props
de componente a componente, lo que puede ser tedioso y difícil de manejar en aplicaciones más grandes. Una alternativa es utilizar el patrón Provider
que facilita la distribución del estado a lo largo de la estructura de componentes.
function App() {
const [state, setState] = React.useState(initialState);
return (
<ToDoProvider value={{ state, setState }}>
<ToDoHeader />
<ToDoList />
</ToDoProvider>
);
}
¿Cómo optimizar la composición de componentes?
Una buena práctica es dejar que los componentes definan sus propios hijos a través de sus propiedades children
, en lugar de declarar explícitamente qué componentes deben contener. Esto proporciona una mayor flexibilidad para compartir y reutilizar el estado.
function ToDoHeader({ children }) {
return <header>{children}</header>;
}
function ToDoList({ children }) {
return (
<section className="ToDoList-container">
{children}
</section>
);
}
Y así los llamas en App
:
function App() {
return (
<React.Fragment>
<ToDoHeader>
<ToDoCounter />
<ToDoSearch />
</ToDoHeader>
<ToDoList>
<ToDoItem />
</ToDoList>
</React.Fragment>
);
}
¿Qué ventajas trae la composición de componentes y colocación del estado en React?
Implementar correctamente la composición de componentes y el manejo de estados evita la necesidad de pasar una cadena interminable de props
. Facilita que los estados puedan ser compartidos y utilizados en cualquier parte de la jerarquía de componentes sin importar su nivel. Esto resulta en componentes más limpios y manejables:
- Eficiencia: Reduces código innecesario y simplifies la arquitectura al evitar pasar
props
redundantes. - Flexibilidad: Puedes definir qué componentes van en cada sección de manera dinámica, mejorando la reutilización del código.
- Escalabilidad: Facilita la adición o modificación de características sin complicar la base de código.
Con estos principios en mente, puedes comenzar a aplicar estos patrones a tus proyectos de manera eficiente, asegurando una base sólida para construir aplicaciones más complejas en el futuro. Además, siempre recuerda que el aprendizaje constante y la práctica fortalecen tus habilidades como desarrollador. ¡Ánimo y sigue practicando!