Contenido del curso
Introducción a React Router DOM 6
- 4

Instalar React Router Dom 6 paso a paso
11:18 min - 5

Browser Router vs Hash Router en GitHub Pages
07:25 min - 6

Primeras rutas con React Router Dom 6
10:41 min - 7

Link y NavLink para navegación en React
13:18 min - 8

Rutas dinámicas con React Router DOM y useParams
15:36 min - 9

useNavigate para navegar con JavaScript
08:56 min - 10

Outlet y rutas anidadas en React Router
06:56 min
Fake authentication con React Router DOM 6
- 11

Rutas privadas con fake auth en React
23:48 min - 12

Rutas privadas y públicas en React
09:50 min - 13

Rutas protegidas con Navigate en React
13:45 min - 14

Roles y permisos en aplicaciones web: Autenticación y autorización
11:56 min - 15

Retos avanzados en React: manejo de estado y composición de componentes
08:21 min - 16

Redirect al login con useLocation en React
03:42 min - 17

Rutas dinámicas con roles de usuario
04:56 min
React Router en TODO Machine
- 18

Cómo migrar React portals a rutas reales
11:33 min - 19

Estructura de carpetas con React Router Dom 6
18:40 min - 20

Botón de editar todos con React y SVG
12:19 min - 21

Generación de IDs únicos para gestionar tareas en React
15:22 min - 22

Migrar modales a rutas con useNavigate
17:36 min - 23

Cómo funciona editTodo con useParams
14:02 min - 24

Texto por defecto en textarea con useLocation
21:54 min - 25

Implementación de React Router en Proyectos Legacy
11:07 min
Próximos pasos
Clonar React Router desde cero
Resumen
Clonar React Router en React es el reto final para entender cómo funciona la navegación SPA por dentro. Vas a construir tus propios componentes HashRouter, Route y Link, además de custom hooks como useLocation y useNavigate, replicando la lógica de react-router-dom desde cero.
Este ejercicio cierra el ciclo de aprendizaje sobre enrutamiento en JavaScript: pasaste de un router vainilla basado en location.hash a una versión componetizada en React, lista para reusar en cualquier proyecto.
Qué significa clonar React Router en React
La idea es replicar el comportamiento de react-router-dom sin instalarlo. En el reto anterior ya construiste un router en JavaScript puro que escuchaba location.hash y renderizaba contenido distinto según la ruta. Ahora toca llevar esa misma lógica al mundo de los componentes.
¿Qué hace un HashRouter? Lee el valor de location.hash en la URL y decide qué componente renderizar. Cuando el hash cambia, el router actualiza la vista sin recargar la página.
No necesitas que el código quede perfecto en el primer intento. La consigna es clara: primero haz que funcione, después lo refactorizas.
Cómo construir HashRouter, Route y Link paso a paso
El reto principal se compone de tres piezas que trabajan juntas. Cada una tiene una responsabilidad concreta dentro del sistema de navegación.
Cómo crear tu propio componente HashRouter
El HashRouter es el contenedor que envuelve toda la app y mantiene el estado de la ruta actual. Su trabajo es escuchar los cambios en location.hash y notificar a los componentes hijos para que renderen lo que corresponde.
Puedes apoyarte en el Context API de React para compartir la ruta activa con cualquier componente anidado. Así, Route y Link podrán leer y modificar esa ruta sin pasar props manualmente.
Cómo funciona el componente Route con la propiedad path
El componente Route recibe una propiedad path y decide si renderiza o no su contenido. Si el path hace match con el hash actual, muestra el componente; si no, devuelve null.
¿Cómo decide Route qué renderizar? Compara su prop path con el hash actual de la URL. Si coinciden, renderiza el componente hijo; si no, no devuelve nada.
El nombre de la prop lo eliges tú. Puede ser path, route o lo que prefieras, siempre que mantengas consistencia.
Por qué necesitas un componente Link en lugar de una etiqueta a
Una etiqueta a normal dispara una nueva petición HTTP y rompe la experiencia SPA. El componente Link evita eso: usa JavaScript para cambiar la URL y, en consecuencia, la ruta renderizada, sin recargar el HTML.
Puedes usar la etiqueta que prefieras por dentro, lo importante es que el cambio de ruta ocurra en cliente. Esa es la diferencia clave entre navegación tradicional y navegación SPA.
Cómo replicar los custom hooks useLocation y useNavigate
Si quieres llevar el reto un paso más allá, clona también los custom hooks de react-router-dom. Estos hooks permiten interactuar con el router desde cualquier componente funcional sin pasar props.
- useLocation: devuelve información sobre la ruta actual, como el hash o el pathname.
- useNavigate: retorna una función que cambia la URL programáticamente desde JavaScript.
- Otros hooks que quieras explorar, como los relacionados con parámetros o búsqueda.
La lógica detrás es la misma del HashRouter: leer y escribir sobre location.hash, y notificar los cambios al resto de la app mediante contexto o estado.
Qué aprenderás al terminar este reto de React
Más allá del código, este ejercicio te deja claridad sobre cómo funcionan las librerías que usas todos los días. Entender el motor interno de React Router cambia tu forma de leer documentación y de depurar bugs.
- Manejo de location.hash como fuente de verdad para la ruta.
- Composición de componentes con Context API para compartir estado global.
- Diferencia entre navegación tradicional con etiqueta a y navegación SPA con un Link personalizado.
- Creación de custom hooks que encapsulan lógica reutilizable.
Cuando termines, comparte tu versión en los comentarios. La idea es ver qué soluciones aparecen en la comunidad, comparar enfoques y mejorar iteración tras iteración hasta tener una versión sólida de React Router hecha por ti.