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.

  1. 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

  1. 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>&copy; 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;

  1. 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;

  1. 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

/* src/components/MainContent.css */
.main-content {
  flex: 1;
  padding: 20px;
}

4.5. Estilos Generales

/* src/styles/App.css */
.app {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.content {
  display: flex;
  flex: 1;
}

  1. Ejercicio Práctico

Ejercicio

  1. Crea un nuevo componente llamado NavBar que contenga enlaces de navegación.
  2. Integra el componente NavBar en el componente App para que se muestre en la parte superior de la página, justo debajo del Header.

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

Módulo 2: Componentes de React

Módulo 3: Trabajando con Eventos

Módulo 4: Conceptos Avanzados de Componentes

Módulo 5: Hooks de React

Módulo 6: Enrutamiento en React

Módulo 7: Gestión del Estado

Módulo 8: Optimización del Rendimiento

Módulo 9: Pruebas en React

Módulo 10: Temas Avanzados

Módulo 11: Proyecto: Construyendo una Aplicación Completa

© Copyright 2024. Todos los derechos reservados