Carlos Vera
Lucas Frazzetta
Edwin Gustavo Rozo Gómez
Configurar rutas en React con React Router Dom te permite enlazar cada URL con una página específica de tu aplicación. Aprenderás a instalar la librería, usar el hook useRoutes y envolver todo con BrowserRouter para que el enrutamiento funcione correctamente en proyectos frontend.
¿Cómo se instala React Router Dom en un proyecto React?
La instalación es directa desde la terminal y solo necesitas un comando para sumarlo a tus dependencias.
Abre tu terminal en la raíz del proyecto y ejecuta:
bash npm install react-router-dom
Una vez termine la instalación, ya puedes importar los hooks y componentes que necesitas dentro de App.jsx. Un buen hábito es ordenar los imports en este orden:
Mantener esa consistencia hace que tu código sea mucho más fácil de leer cuando el proyecto crece.
¿Qué es React Router Dom? Es la librería oficial para manejar rutas en aplicaciones React. Te permite mostrar diferentes componentes según la URL del navegador sin recargar la página.
¿Cómo usar el hook useRoutes para definir rutas?
El hook useRoutes recibe un array de objetos donde cada objeto representa una ruta de tu aplicación.
Dentro de App.jsx importas el hook desde react-router-dom y creas una variable que guarde la configuración:
jsx import { useRoutes } from 'react-router-dom'
const AppRoutes = () => { let routes = useRoutes([ { path: '/', element: <Home /> }, { path: '/my-account', element: <MyAccount /> }, { path: '/my-orders', element: <MyOrders /> }, { path: '/my-order', element: <MyOrder /> }, { path: '/*', element: <NotFound /> }, { path: '/sign-in', element: <SignIn /> }, ]) return routes }
Cada objeto tiene dos propiedades clave: path, que define la URL, y element, que indica qué componente renderizar cuando esa ruta coincida.
¿Por qué separar AppRoutes en su propia función?
Separar la lógica de rutas en una función propia te ayuda a mantener App limpio y enfocado en la estructura general.
La función AppRoutes se encarga únicamente de retornar las rutas, mientras que App se ocupa de envolver todo con los providers y componentes globales que necesites más adelante, como un navbar o un context.
¿Cómo manejar rutas no encontradas con el asterisco?
El path '/*' funciona como comodín y captura cualquier URL que no coincida con las rutas definidas previamente.
En la práctica significa que si alguien escribe una dirección que no existe en tu app, automáticamente verá tu página NotFound. Es una solución elegante para manejar errores 404 sin escribir lógica adicional.
¿Para qué sirve BrowserRouter en React Router Dom?
BrowserRouter es el componente que habilita el enrutamiento en toda tu aplicación, y sin él los hooks de rutas no funcionan.
Debes envolver tu componente AppRoutes dentro de BrowserRouter en el App principal:
jsx import { BrowserRouter } from 'react-router-dom'
const App = () => { return ( <BrowserRouter> <AppRoutes /> </BrowserRouter> ) }
export default App
Después de guardar, levantas el servidor con npm run dev y al visitar localhost verás la página Home. Si escribes /my-orders en la URL, te llevará al componente correspondiente, y si escribes cualquier ruta inexistente, aparecerá NotFound.
¿Qué diferencia hay entre useRoutes y BrowserRouter?
useRoutesdefine qué componente mostrar según la URL.BrowserRouteractiva el sistema de enrutamiento del navegador. Necesitas ambos para que funcione.
Habilidades y conceptos que aprendes en la clase
Antes de avanzar al siguiente paso, vale la pena identificar los aprendizajes técnicos que te llevas.
npm install react-router-dom.path y element para definir rutas declarativamente.'/*' para capturar cualquier URL no definida y mostrar una página NotFound.AppRoutes y App en funciones distintas para mantener el código modular.En la siguiente clase darás el paso lógico: construir un componente navbar que conecte cada enlace con su ruta, para no tener que escribir las URLs manualmente. Cuéntame en los comentarios cómo te fue con la instalación y si lograste enlazar todas tus páginas sin problemas.
Carlos Vera
Lucas Frazzetta
Edwin Gustavo Rozo Gómez
Aaron Yamil Luna Parrado
Eduard Barrios
JOSE FABIAN BONILLA GUZMAN
Remix Zapata
Bryan Enrique Garay Benavidez
Rubén Ernesto Aragón Gil
Juan Mercado
Wilfredo Pinto
Vladimir Farrera Vera
Juan Carlos Montilla Sánchez
Isaac Hernandez Resendiz
Uber Cardoso
Miguel Angel Reyes Moreno
Andres Felipe Camacho Rodriguez
Fernando Orozco Velasquez
Carlos Andres Alavez Santiago
thenine xl
Juan Camilo Guerrero González
Vladimir Farrera Vera
Juan Pablo García Chávez
Carlos Andres Castaño
Christian Marin
Arlen
No conocía esa forma usando el hook, lo hacía a la antigua de usar el browser router y sus childs serían routes y route por cada ruta, fue interesante
Yo tampoco lo conocía!! :)
Se ve chévere, pero no entiendo si es que mejora el performance o qué mejora de este modo.
Que sencillo lo explica, react-router-dom anotado, directo al CV 😂
Pequeño aporte de un error que cometí. escribiendo el codigo puse
const appRoutes
esto no funciona porque para el uso de los Hooks la función SIEMPRE debe comenzar con mayuscula, debe ser:
const AppRoutes
xD una vez me paso y ahi aprendi :v
Con el glorioso TypeScript, no pasan estas cosas. :v
Hola comunidad les comparto unos pequeños apuntes en Notion, espero les sean de utilidad. Link aquí:
Comando para instalar react rout
npm install react-router-dom
Decir que react-router dom tiene diferentes tipos de providers o routers: BrowserRouter: nos direcciona a las rutas sin la necesidad de un hash "/rute",cuando tenemos acceso total al servidor HashRouter: agrega un hash a nuestras rutas "#/rute", cuando no tenemos un acceso total al backend MemoryRouter:almacena sus ubicaciones internamente en una matriz, para cuando queremos tener un mejor manejo del historial de nuestra app NativeRouter: para reactNative o apps mobiles
Estos son los que inyecta codigo para que puedamos hacer redirecciones, crear rutas,etc
Personalmente me gusto esta clase, para poder darle en mi opinion una mejor organizacion separe todo en dos archivos, cree una carpeta Routes/index.jsx en donde estara mi componente que define las rutas
import Home from '../pages/Home'; import MyAccount from '../pages/MyAccount'; import MyOrder from '../pages/MyOrder'; import MyOrders from '../pages/MyOrders'; import NotFound from '../pages/NotFound'; import SignIn from '../pages/SignIn'; import {useRoutes} from 'react-router-dom'; const AppRoutes = ()=>{ let routes = useRoutes([ {path: '/',element: <Home/>}, {path:'/my-order',element: <MyOrder/>}, {path:'/my-account',element: <MyAccount/>}, {path:'/my-orders',element: <MyOrders/>}, {path:'/singin',element: <SignIn/>}, {path:'/*',element: <NotFound/>}, ]); return routes; }; export default AppRoutes;
Por otro lado mi componente app quedo un poco mas limpio y un poco mas facil de leer en mi opinion, se ve asi
import {BrowserRouter} from 'react-router-dom'; import AppRoutes from '../../Routes'; import './App.css'; function App() { return ( <BrowserRouter> <AppRoutes/> </BrowserRouter> ) } export default App
como se tipa?? con tyscript
Por buena práctica, se recomienda colocar las páginas que no existen al final, ya que hay algúnos lenguajes de backend que son monohilos y son secuenciales, por ende, si anteriormente tenemos una ruta (*) no va a pasar a la siguiente (/signin)
Dato curioso jejeje
Puntos clave de la clase:
Instalar react router dom: npm install react-router-dom
Importar react-router-dom en componente App :
import { useRouters } from 'react-router-dom'
const AppRoutes = () => { let routes = useRoutes([ { path: '/', element: <Home /> }, { path: '/my-account', element :<MyAccount/>}, ]) }
Nota: tienes que agregar las demas rutas, no olvides que el path de NotFound es '/*' 4. Tu función app, debe de quedar así:
const App = () => { return( <BrowserRouter> <AppRoutes /> </BrowserRouter> ) }
Verificar que VSCode halla importado BrowserRouter, de no ser así, toca hacerlo manualmente. Saludos platzi nautas.
Es impresion mia o al 2024 , este material ya esta viejo?, hay maneras mas simples de hacr lo mismo?
¿No sería mejor poner el 'Not found' hasta abajo? Creo que estas rutas se manejan como un if else y si no entra en ninguna entonces mandamos el error 404
let routes = useRoutes([ { path: '/', element: <Home />, }, { path: '/my-account', element: <MyAccount />, }, { path: '/my-order/:id', element: <MyOrder />, }, { path: '/my-orders', element: <MyOrders />, }, { path: '/sign-in', element: <SignIn />, }, { path: '/*', element: <NotFound />, } ])
Con la teacher aprendi a ser mas organizado hay voy 🤣🤣🤣🤣🤣🤣 Me gustaría sacarle el # celular esta linda Estefany Aguilar ayayai
No lo haga compa...
Al instalar npm install react-router-dom me salieron un monton de errores que no me dejaba instalarlo hice lo siguiente:
rm -rf node_modules rm -f package-lock.json rm -f yarn.lock npm cache clean --force
Y volver a instalar los paquetes npm install
Ya despues si me pudo instalar correctamente.
Gracias. Yo también sufrí errores de ERESOLVE de incompatibilidad de algunas dependencias. Tu solución ha ido perfecta y puedo continuar el curso sin mayores problemas.
Hola, si quisiera bloquear una ruta del router para que no se ejecute si el usuario no tiene una sesion activa
Mas que intento no funciona con Next JS,
todas las rutas son esa

¿El enrutamiento podría ser desde un componente y tener su propia carpeta y así no llenar tanto el índex de App?
import { useRoutes } from "react-router-dom"; import Home from "../../Pages/Home"; import MyAccount from "../../Pages/MyAccount"; import MyOrder from "../../Pages/MyOrder"; import MyOrders from "../../Pages/MyOrders"; import NotFound from "../../Pages/NotFound"; import SignIn from "../../Pages/SignIn"; const AppRoutes = () => { const routes = useRoutes([ { path: "/", element: <Home />, }, { path: "/account", element: <MyAccount />, }, { path: "/myorder", element: <MyOrder />, }, { path: "/orderes", element: <MyOrders />, }, { path: "/signin", element: <SignIn />, }, { path: "/*", element: <NotFound />, }, ]); return routes; }; export default AppRoutes; ```Una buena forma de tener un código mas limpio puede ser crear este componente y luego importarlo en App de la siguiente manera ```js import { BrowserRouter } from "react-router-dom"; import AppRoutes from "../../Components/Routes/Routes"; import "./Index.css"; function App() { return ( <BrowserRouter> <AppRoutes /> </BrowserRouter> ); } export default App;
Que ventaja o desventaja tiene utilizar el hook useRoutes antes de usar createBrowserRouter?
En el caso de que una ruta tuviera una ruta hija, còmo serìa el còdigo en el App Component?