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
Viendo ahora - 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
Rutas dinámicas con React Router DOM y useParams
Resumen
Las rutas dinámicas son la base de cualquier app moderna que muestre contenido distinto según la URL: un blog post, una clase, un perfil. Con useParams de React Router Dom v6 puedes leer ese fragmento variable de la URL (el slug) y renderizar contenido distinto reutilizando un mismo componente. Esta guía te muestra cómo hacerlo paso a paso usando un blog como ejemplo.
Qué es un slug y por qué importa en una ruta dinámica
Imagina que entras a platzi.com/clases/como-aprender-react. Esa última parte, como-aprender-react, es el slug: el identificador único que le dice a tu app qué contenido mostrar dentro de una misma plantilla [02:15]. La estructura de la vista (videoplayer, título, profesor, comentarios) se mantiene, pero el contenido cambia según ese identificador.
En React Router defines ese segmento variable con dos puntos seguidos del nombre, así: /blog/:slug. Lo que sea que venga después de /blog/ queda capturado bajo esa variable y disponible para tu componente.
¿Qué es un slug en una URL? Es la parte final y legible que identifica un recurso único, como
que-es-reacten/blog/que-es-react. Funciona como una llave para buscar el contenido correcto.
Cómo construir la lista de enlaces con datos simulados
Antes de leer parámetros, necesitas algo que enlace hacia esas rutas dinámicas. La idea es tener un arreglo blogData con objetos que contengan al menos title, slug, content y author, y luego mapearlo en la página del blog [05:40].
La estructura queda así:
- Un archivo
blogData.jsque exporta el arreglo con los posts. - Un componente
BlogPageque importablogDatay hace.mapsobre él. - Un componente interno
BlogLinkque recibe elpostpor props y renderiza un<Link>apuntando a/blog/${post.slug}.
jsx
function BlogLink({ post }) {
return (
<li>
<Link to={/blog/${post.slug}}>{post.title}</Link>
</li>
);
}
Cada slug debe ser único, porque dos URLs idénticas no pueden coexistir en el enrutador. Si necesitas otro identificador interno, agrégalo como propiedad aparte (por ejemplo id), pero el slug manda en la URL.
Cómo leer parámetros de la URL con useParams
Aquí entra la pieza clave. Cuando defines la ruta como /blog/:slug en tu App.js, React Router guarda ese valor y te lo entrega a través del hook useParams, que importas desde react-router-dom [10:25].
Dentro de tu componente BlogPost lo usas con desestructuración:
jsx import { useParams } from 'react-router-dom'; import { blogData } from './blogData';
function BlogPost() { const { slug } = useParams(); const blogPost = blogData.find(post => post.slug === slug);
return ( <> <h2>{blogPost.title}</h2> <p>{blogPost.author}</p> <p>{blogPost.content}</p> </> ); }
Fíjate en el flujo: useParams te devuelve el slug desde la URL, luego usas .find() sobre el arreglo para localizar el post que coincida, y finalmente renderizas sus campos. En una app real, ese .find() se reemplaza por una llamada a una API que reciba el slug como parámetro.
¿Qué devuelve useParams en React Router 6? Devuelve un objeto con todas las variables definidas en la ruta con
:. Si tu ruta es/blog/:slug, obtienes{ slug: 'valor-de-la-url' }.
Por qué separar blogData en su propio archivo
Mover el arreglo blogData a un archivo independiente permite que tanto BlogPage (la lista) como BlogPost (el detalle) lo importen sin duplicar datos [13:50]. Es un patrón básico de organización que te prepara para sustituir esos datos por una capa de servicios real.
Cómo se ve el resultado de una ruta dinámica funcional
Cuando todo está conectado, la magia se nota: entras a /blog, ves la lista de publicaciones, haces clic en ¿Qué es React? y aterrizas en /blog/que-es-react con el título, autor y contenido específicos. Cambias a /blog/que-es-vue y el mismo componente BlogPost se rellena con datos distintos, sin que tú hayas escrito una ruta manual por cada post.
Esa es la potencia de las rutas dinámicas: un solo componente, infinito contenido, todo gobernado por el slug de la URL y la lectura que useParams hace de ella.
En la siguiente entrega vas a conocer useNavigate, otro hook de React Router Dom que te permite cambiar de ruta sin depender de los componentes Link o NavLink. ¿Ya estás usando rutas dinámicas en algún proyecto? Cuéntame en los comentarios cómo las estructuras tú.