En este tema, vamos a construir la interfaz de usuario (UI) de nuestra aplicación completa utilizando React. Este proceso implica la creación de componentes reutilizables, la gestión del estado y la integración de estilos. A lo largo de esta sección, seguiremos un enfoque paso a paso para asegurarnos de que cada concepto se entienda claramente.
Objetivos de Aprendizaje
- Crear componentes reutilizables en React.
- Gestionar el estado de los componentes.
- Aplicar estilos a los componentes.
- Integrar componentes para construir una interfaz de usuario coherente.
- Estructura del Proyecto
Antes de comenzar a construir la UI, es importante tener una estructura de proyecto organizada. Aquí hay una estructura de ejemplo:
my-app/ ├── public/ │ ├── index.html │ └── ... ├── src/ │ ├── components/ │ │ ├── Header.js │ │ ├── Footer.js │ │ ├── Sidebar.js │ │ └── MainContent.js │ ├── App.js │ ├── index.js │ └── styles/ │ ├── App.css │ └── ... └── package.json
- Creación de Componentes Reutilizables
2.1. Componente Header
El componente Header será responsable de mostrar el encabezado de nuestra aplicación.
// src/components/Header.js
import React from 'react';
import './Header.css';
const Header = () => {
return (
<header className="header">
<h1>Mi Aplicación</h1>
</header>
);
};
export default Header;2.2. Componente Footer
El componente Footer mostrará el pie de página de nuestra aplicación.
// src/components/Footer.js
import React from 'react';
import './Footer.css';
const Footer = () => {
return (
<footer className="footer">
<p>© 2023 Mi Aplicación. Todos los derechos reservados.</p>
</footer>
);
};
export default Footer;2.3. Componente Sidebar
El componente Sidebar contendrá enlaces de navegación.
// src/components/Sidebar.js
import React from 'react';
import './Sidebar.css';
const Sidebar = () => {
return (
<aside className="sidebar">
<nav>
<ul>
<li><a href="#home">Inicio</a></li>
<li><a href="#about">Acerca de</a></li>
<li><a href="#contact">Contacto</a></li>
</ul>
</nav>
</aside>
);
};
export default Sidebar;2.4. Componente MainContent
El componente MainContent será el contenedor principal para el contenido de la aplicación.
// src/components/MainContent.js
import React from 'react';
import './MainContent.css';
const MainContent = () => {
return (
<main className="main-content">
<h2>Bienvenido a Mi Aplicación</h2>
<p>Este es el contenido principal de la aplicación.</p>
</main>
);
};
export default MainContent;
- Integración de Componentes
Ahora que hemos creado nuestros componentes, los integraremos en el componente principal App.
// src/App.js
import React from 'react';
import Header from './components/Header';
import Footer from './components/Footer';
import Sidebar from './components/Sidebar';
import MainContent from './components/MainContent';
import './styles/App.css';
const App = () => {
return (
<div className="app">
<Header />
<div className="content">
<Sidebar />
<MainContent />
</div>
<Footer />
</div>
);
};
export default App;
- Aplicación de Estilos
Para que nuestra aplicación se vea bien, necesitamos aplicar algunos estilos CSS. Aquí hay un ejemplo básico de cómo podríamos estilizar nuestros componentes.
4.1. Estilos para Header
/* src/components/Header.css */
.header {
background-color: #282c34;
padding: 20px;
color: white;
text-align: center;
}4.2. Estilos para Footer
/* src/components/Footer.css */
.footer {
background-color: #282c34;
padding: 10px;
color: white;
text-align: center;
position: fixed;
width: 100%;
bottom: 0;
}4.3. Estilos para Sidebar
/* src/components/Sidebar.css */
.sidebar {
width: 200px;
background-color: #f4f4f4;
padding: 15px;
}
.sidebar ul {
list-style-type: none;
padding: 0;
}
.sidebar li {
margin: 10px 0;
}
.sidebar a {
text-decoration: none;
color: #333;
}4.4. Estilos para MainContent
4.5. Estilos Generales
/* src/styles/App.css */
.app {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.content {
display: flex;
flex: 1;
}
- Ejercicio Práctico
Ejercicio
- Crea un nuevo componente llamado
NavBarque contenga enlaces de navegación. - Integra el componente
NavBaren el componenteApppara que se muestre en la parte superior de la página, justo debajo delHeader.
Solución
Componente NavBar
// src/components/NavBar.js
import React from 'react';
import './NavBar.css';
const NavBar = () => {
return (
<nav className="navbar">
<ul>
<li><a href="#home">Inicio</a></li>
<li><a href="#services">Servicios</a></li>
<li><a href="#contact">Contacto</a></li>
</ul>
</nav>
);
};
export default NavBar;Estilos para NavBar
/* src/components/NavBar.css */
.navbar {
background-color: #333;
padding: 10px;
}
.navbar ul {
list-style-type: none;
padding: 0;
display: flex;
justify-content: space-around;
}
.navbar li {
margin: 0 10px;
}
.navbar a {
text-decoration: none;
color: white;
}Integración en App
// src/App.js
import React from 'react';
import Header from './components/Header';
import NavBar from './components/NavBar';
import Footer from './components/Footer';
import Sidebar from './components/Sidebar';
import MainContent from './components/MainContent';
import './styles/App.css';
const App = () => {
return (
<div className="app">
<Header />
<NavBar />
<div className="content">
<Sidebar />
<MainContent />
</div>
<Footer />
</div>
);
};
export default App;Conclusión
En esta sección, hemos aprendido a construir la interfaz de usuario de nuestra aplicación React mediante la creación de componentes reutilizables, la gestión del estado y la aplicación de estilos. Hemos integrado estos componentes para formar una UI coherente y funcional. En la siguiente sección, nos enfocaremos en la gestión del estado y la integración de API para hacer nuestra aplicación más dinámica y funcional.
Curso de React
Módulo 1: Introducción a React
- ¿Qué es React?
- Configuración del Entorno de Desarrollo
- Hola Mundo en React
- JSX: Extensión de Sintaxis de JavaScript
Módulo 2: Componentes de React
- Entendiendo los Componentes
- Componentes Funcionales vs de Clase
- Props: Pasando Datos a Componentes
- State: Gestión del Estado del Componente
Módulo 3: Trabajando con Eventos
- Manejo de Eventos en React
- Renderizado Condicional
- Listas y Claves
- Formularios y Componentes Controlados
Módulo 4: Conceptos Avanzados de Componentes
- Elevando el Estado
- Composición vs Herencia
- Métodos del Ciclo de Vida de React
- Hooks: Introducción y Uso Básico
Módulo 5: Hooks de React
Módulo 6: Enrutamiento en React
Módulo 7: Gestión del Estado
- Introducción a la Gestión del Estado
- API de Contexto
- Redux: Introducción y Configuración
- Redux: Acciones y Reductores
- Redux: Conectando a React
Módulo 8: Optimización del Rendimiento
- Técnicas de Optimización del Rendimiento en React
- Memorización con React.memo
- Hooks useMemo y useCallback
- División de Código y Carga Perezosa
Módulo 9: Pruebas en React
- Introducción a las Pruebas
- Pruebas Unitarias con Jest
- Pruebas de Componentes con React Testing Library
- Pruebas de Extremo a Extremo con Cypress
Módulo 10: Temas Avanzados
- Renderizado del Lado del Servidor (SSR) con Next.js
- Generación de Sitios Estáticos (SSG) con Next.js
- TypeScript con React
- React Native: Creación de Aplicaciones Móviles
