En esta lección, aprenderemos cómo configurar React Router en una aplicación React. React Router es una biblioteca estándar para el enrutamiento en aplicaciones React, que permite la navegación entre diferentes vistas de manera sencilla y eficiente.
Objetivos de Aprendizaje
- Entender qué es React Router y por qué es útil.
- Aprender a instalar y configurar React Router en una aplicación React.
- Crear rutas básicas y navegar entre ellas.
¿Qué es React Router?
React Router es una biblioteca que permite manejar el enrutamiento en aplicaciones React. Proporciona una forma declarativa de definir rutas y gestionar la navegación entre diferentes vistas o componentes.
Ventajas de usar React Router
- Declarativo: Define las rutas de manera clara y legible.
- Dinámico: Permite la creación de rutas dinámicas basadas en parámetros.
- Anidado: Soporta rutas anidadas para estructuras de navegación complejas.
- Programático: Permite la navegación programática mediante métodos de la API.
Instalación de React Router
Para comenzar a usar React Router, primero necesitamos instalarlo en nuestra aplicación React. Utilizaremos react-router-dom
, que es la versión de React Router diseñada para aplicaciones web.
Paso 1: Instalación
Ejecuta el siguiente comando en tu terminal para instalar react-router-dom
:
Paso 2: Configuración Básica
Una vez instalado, necesitamos configurar React Router en nuestra aplicación. Vamos a crear un archivo App.js
que contendrá la configuración básica de las rutas.
Estructura del Proyecto
Asegúrate de que tu proyecto tenga la siguiente estructura básica:
my-app/ ├── node_modules/ ├── public/ ├── src/ │ ├── components/ │ │ ├── Home.js │ │ ├── About.js │ │ └── Contact.js │ ├── App.js │ ├── index.js ├── package.json └── README.md
Paso 3: Configuración de Rutas en App.js
Vamos a configurar las rutas en el archivo App.js
. Primero, importamos los componentes necesarios de react-router-dom
y luego definimos nuestras rutas.
// src/App.js import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; function App() { return ( <Router> <div> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> </Switch> </div> </Router> ); } export default App;
Explicación del Código
- BrowserRouter: Es el contenedor principal que envuelve toda la aplicación y habilita el enrutamiento.
- Switch: Renderiza exclusivamente la primera ruta que coincida con la URL actual.
- Route: Define una ruta específica. El
path
es la URL que activará esta ruta, ycomponent
es el componente que se renderizará.
Paso 4: Creación de Componentes
Vamos a crear los componentes Home
, About
y Contact
en la carpeta components
.
Home.js
// src/components/Home.js import React from 'react'; function Home() { return ( <div> <h1>Home Page</h1> <p>Welcome to the Home Page!</p> </div> ); } export default Home;
About.js
// src/components/About.js import React from 'react'; function About() { return ( <div> <h1>About Page</h1> <p>This is the About Page.</p> </div> ); } export default About;
Contact.js
// src/components/Contact.js import React from 'react'; function Contact() { return ( <div> <h1>Contact Page</h1> <p>Get in touch with us!</p> </div> ); } export default Contact;
Paso 5: Integración en index.js
Finalmente, asegurémonos de que App.js
se esté utilizando en nuestro archivo index.js
.
// src/index.js import React from 'react'; import ReactDOM from 'react-dom'; import './index.css'; import App from './App'; ReactDOM.render( <React.StrictMode> <App /> </React.StrictMode>, document.getElementById('root') );
Ejercicio Práctico
Ejercicio 1: Añadir una Nueva Ruta
Añade una nueva ruta para una página Services
en tu aplicación.
- Crea un nuevo componente
Services.js
en la carpetacomponents
. - Define una nueva ruta en
App.js
para el componenteServices
.
Solución
- Crear el componente
Services.js
:
// src/components/Services.js import React from 'react'; function Services() { return ( <div> <h1>Services Page</h1> <p>These are our services.</p> </div> ); } export default Services;
- Añadir la ruta en
App.js
:
// src/App.js import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Home from './components/Home'; import About from './components/About'; import Contact from './components/Contact'; import Services from './components/Services'; // Importar el nuevo componente function App() { return ( <Router> <div> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> <Route path="/contact" component={Contact} /> <Route path="/services" component={Services} /> {/* Nueva ruta */} </Switch> </div> </Router> ); } export default App;
Conclusión
En esta lección, hemos aprendido cómo instalar y configurar React Router en una aplicación React. Hemos creado rutas básicas y hemos visto cómo navegar entre diferentes vistas. En la próxima lección, exploraremos rutas anidadas y cómo gestionar la navegación más compleja.
¡Felicidades por completar esta lección! Ahora estás listo para avanzar al siguiente tema sobre Rutas Anidadas.
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