En este tema, aprenderemos cómo realizar la navegación programática en una aplicación React utilizando React Router. La navegación programática es útil cuando necesitas redirigir a los usuarios en respuesta a eventos específicos, como después de enviar un formulario o al hacer clic en un botón.
Conceptos Clave
- React Router: Biblioteca de enrutamiento para React que permite la navegación entre diferentes componentes.
- useHistory Hook: Hook proporcionado por React Router para acceder al historial de navegación.
- history.push(): Método para redirigir a una nueva ruta.
- history.replace(): Método para reemplazar la ruta actual sin agregar una nueva entrada en el historial.
Configuración Inicial
Antes de comenzar, asegúrate de tener React Router instalado en tu proyecto. Si no lo tienes, puedes instalarlo usando npm o yarn:
o
Ejemplo Práctico
Vamos a crear un ejemplo simple donde redirigimos al usuario a una página de "Perfil" después de hacer clic en un botón.
Paso 1: Configuración de Rutas
Primero, configuramos nuestras rutas en el componente principal de la aplicación.
// App.js import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Home from './Home'; import Profile from './Profile'; function App() { return ( <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/profile" component={Profile} /> </Switch> </Router> ); } export default App;
Paso 2: Creación de Componentes
Creamos dos componentes simples: Home
y Profile
.
// Home.js import React from 'react'; import { useHistory } from 'react-router-dom'; function Home() { const history = useHistory(); const navigateToProfile = () => { history.push('/profile'); }; return ( <div> <h1>Home Page</h1> <button onClick={navigateToProfile}>Go to Profile</button> </div> ); } export default Home;
// Profile.js import React from 'react'; function Profile() { return ( <div> <h1>Profile Page</h1> </div> ); } export default Profile;
Explicación del Código
- useHistory Hook: En el componente
Home
, utilizamos el hookuseHistory
para obtener acceso al historial de navegación. - navigateToProfile Function: Definimos una función
navigateToProfile
que utilizahistory.push('/profile')
para redirigir al usuario a la página de perfil cuando se hace clic en el botón.
Ejercicio Práctico
Crea un componente Login
que redirija a la página de "Dashboard" después de que el usuario haga clic en un botón "Login".
Solución
// Login.js import React from 'react'; import { useHistory } from 'react-router-dom'; function Login() { const history = useHistory(); const handleLogin = () => { // Aquí podrías agregar lógica de autenticación history.push('/dashboard'); }; return ( <div> <h1>Login Page</h1> <button onClick={handleLogin}>Login</button> </div> ); } export default Login;
// Dashboard.js import React from 'react'; function Dashboard() { return ( <div> <h1>Dashboard Page</h1> </div> ); } export default Dashboard;
// App.js (actualizado) import React from 'react'; import { BrowserRouter as Router, Route, Switch } from 'react-router-dom'; import Home from './Home'; import Profile from './Profile'; import Login from './Login'; import Dashboard from './Dashboard'; function App() { return ( <Router> <Switch> <Route exact path="/" component={Home} /> <Route path="/profile" component={Profile} /> <Route path="/login" component={Login} /> <Route path="/dashboard" component={Dashboard} /> </Switch> </Router> ); } export default App;
Resumen
En esta lección, aprendimos cómo realizar la navegación programática en React utilizando React Router. Vimos cómo usar el hook useHistory
para acceder al historial de navegación y cómo redirigir a los usuarios utilizando los métodos history.push()
y history.replace()
. Además, implementamos un ejemplo práctico y un ejercicio para reforzar los conceptos aprendidos.
En el próximo módulo, exploraremos la gestión del estado en React, comenzando con una introducción a la API de Contexto.
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