CodeForge

React 19 de Cero a Experto / Routing

Por qué una SPA necesita un router

Teoría22 min20 XP

Tu app de React vive en UNA sola página HTML —por eso se llama SPA (Single Page Application)—. Pero los usuarios esperan varias "pantallas" con sus propias URLs: /gastos, /perfil, /gastos/5. ¿Cómo tienes muchas vistas navegables, con botones de atrás/adelante que funcionan y URLs que se pueden compartir, sin recargar la página entera cada vez? Ese es el trabajo de un ROUTER. Hoy entiendes el problema y ves el mecanismo crudo del navegador que un router envuelve —funcionando en vivo—.

Un edificio, muchas salas

El mecanismo crudo: la History API

Antes de una librería, el navegador ya trae lo esencial: la History API, que cambia la URL SIN recargar (pushState) y avisa cuando el usuario pulsa atrás/adelante (popstate). Este playground es un "router" mínimo hecho a mano con eso —ya lo viste en JavaScript (SC-02, M14)—:

Al pulsar un botón, pushState cambia la URL y setRuta cambia lo que se muestra —sin recarga—. Un objeto paginas mapea cada ruta a su contenido. Eso es un router en su forma más pura: mantener sincronizados la URL y la vista. Un router de verdad (React Router) hace ESTO, pero resolviendo lo difícil: parámetros (/gastos/:id), rutas anidadas, carga de datos por ruta, protección de rutas… todo lo que a mano se vuelve un enredo.

Por qué no lo haces a mano

En una SPA, ¿qué hace que puedas cambiar de 'pantalla' sin que el navegador recargue la página?

Mini-reto

Amplía el mini-router: 1) agrega una cuarta ruta /ayuda con su contenido; 2) resalta el botón de la ruta activa (compara ruta con el destino de cada botón y cambia su estilo); 3) agrega un enlace "volver a inicio" que use ir("/inicio"). Observa cómo, con solo pushState + estado, ya tienes navegación sin recargas —y anticipa por qué querrías una librería cuando esto crezca a parámetros y anidamiento—.

Qué sigue

Ya entiendes el mecanismo. La próxima lección trae React Router: cómo declarar rutas con <Routes> y <Route>, y navegar con <Link> sin recargar —la versión declarativa y robusta de lo que acabas de hacer a mano—.