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
NavBar
que contenga enlaces de navegación. - Integra el componente
NavBar
en el componenteApp
para 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