No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Enrutamiento con React Router DOM

4/31
Recursos

Aportes 39

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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

Una no es mejor que la otra, ambas formas son válidas, pero me gusta más esta definición de las rutas.

Que sencillo lo explica, react-router-dom anotado, directo al CV 😂

Hola comunidad les comparto unos pequeños apuntes en Notion, espero les sean de utilidad.
Link aquí:
https://bg99astro.notion.site/React-Router-DOM-57c1a76d2a3b4814b459261bc450c763?pvs=4

Comando para instalar react rout

npm install react-router-dom

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

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

Puntos clave de la clase:

  1. Instalar react router dom: npm install react-router-dom

  2. Importar react-router-dom en componente App :

import { useRouters } from 'react-router-dom'
  1. Encapsular las rutas en una arrow function:
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.

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

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.

Con la teacher aprendi a ser mas organizado hay voy
🤣🤣🤣🤣🤣🤣
Me gustaría sacarle el # celular esta linda Estefany Aguilar ayayai

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

```js 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; ```
definitivamente eres la mejor
**Resumen** de la clase🎈 en esta clase instalamos la dependencia de react-router-dom con el comando : npm install react-router-dom. Creamos la funcion AppRoutes que reedirecciona de la pagima home a las demas paginas enrutadas. Seguimos el ordes de path y element, en path ponemos la url donde queremos ver la pagina o mejor dicho el componente, y en element el mismo componente. ***Codigo de la clase:*** ```js import { useRoutes, BrowserRouter } from 'react-router-dom' import Home from '../Home' import MyAccount from '../MyAccount' import MyOrder from '../MyOrder' import MyOrders from '../MyOrders' import NotFound from '../NotFound' import Signin from '../Signin' import './App.css' const AppRoutes = () =>{ let routes = useRoutes([ { path: '/', element: <Home/>}, { path: '/my-account', element: <MyAccount/>}, { path: '/my-order', element: <MyOrder/>}, { path: '/my-orders', element: <MyOrders/>}, { path: '/*', element: <NotFound/>}, { path: '/sign-in', element: <Signin/>}, ]) return routes } const App = () =>{ return( <BrowserRouter> <AppRoutes/> </BrowserRouter> ) } export default App; ```
Antes lo había hecho de otra forma, pero interesante ![](https://static.platzi.com/media/user_upload/image-12c31e2d-6289-4fbb-8a92-5c674ec5e0cd.jpg)![](https://static.platzi.com/media/user_upload/image-ab64d893-852e-444c-8c57-606d677f66cf.jpg)
Para facilitar la lectura del código pasé el BrowserRouter directamente el archivo index.tsx ```js const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); root.render( <React.StrictMode> <BrowserRouter> <App /> </BrowserRouter> </React.StrictMode> ); ```Adicionalmente creé el componente AppRoutes en una carpeta aparte ```js import { useRoutes } from 'react-router-dom'; import React from 'react'; import Home from '../Pages/Home'; import { MyOrders } from '../Pages/MyOrders'; import { NotFound } from '../Pages/NotFound'; import { MyOrder } from '../Pages/MyOrder'; import { SignIn } from '../Pages/SignIn'; import { MyAccount } from '../Pages/MyAccount'; export const AppRoutes: React.FC = ()=>{ let routes = useRoutes([ {path: '/', element: <Home />}, {path: '/signin', element: <SignIn />}, {path: '/myaccount', element: <MyAccount />}, {path: '/myorders',element: <MyOrders />}, {path: '/myorder/:id', element: <MyOrder />}, {path: '*', element: <NotFound />}, ]) return routes; } ```
la verdad.. muy bien yo estaba esperando algo así como flask o django... por la costumbre de usar python... pero algo un poquito mas complicado de usar las rutas... pero esto esta brutal... <3
Adoro a la profe Teff, explica de maravilla 😭
Hola PlatziNautas, excelente curso por parte de la profe Stephanie como siempre, un solo detalle, les recomiendo que usen la última versión de vite, en mi caso particular me saltaron un monton de errores por usar la versión de vite de estte curso (lo arreglé borrando los node-modules, el package.json, volviendo a instalar npm y por último instalando la última versión de vite).
Para tener el código más limpio podéis extraer las rutas en un fichero e importarlo. 1. Crear el fichero AppRoutes.tsx ```js import { useRoutes } from 'react-router-dom' // Pages // > Auth import SignIn from './signin'; // > General import Home from './home'; import NotFound from './not-found'; import MyAccount from './my-account'; import MyOrder from './my-order'; import MyOrders from './my-orders'; const AppRoutes = () => { let routes = useRoutes([ { path: "/", element: <Home /> }, { path: "/home", element: <Home /> }, { path: "/signin", element: <SignIn /> }, { path: "/my-account/:id", element: <MyAccount /> }, { path: "/my-order/:id", element: <MyOrder /> }, { path: "/my-orders", element: <MyOrders /> }, { path: "*", element: <NotFound /> }, ]); return routes; }; export default AppRoutes; ```2. Importar en App y os queda así de limpio: ```js // React imports import { BrowserRouter } from 'react-router-dom' // Routes import AppRoutes from './AppRoutes' // General Styles import './App.css' const App = () => { return ( <BrowserRouter> <AppRoutes /> </BrowserRouter> ) } export default App ```
Lol idento igual que teff

me gusto mucho esta clase a verdad antes de esto estuve leyendo un poco la documentación pero aquí entendí muy bien todo

El porque se usa un hook en el enrutamiento

La diferencia principal entre useRoutes y react-router-dom es que useRoutes es parte de la biblioteca react-router (v6 en adelante) y es una alternativa más simple para la creación de enrutadores en aplicaciones de React. Mientras que react-router-dom es la versión anterior de React Router (v5.x) y ofrece una gama más amplia de funcionalidades y componentes para el enrutamiento en aplicaciones de React.

Wow esto es una locura, vamos muy rápido, cuando deje de programar hacia esto con python y django.

createBrowserRouter. es el enrutador recomendado para todos los proyectos web de React Router v6.14.0

Me encanta esta definición de las rutas 🤩. Gracias profe!!

Waoooo no sabia que existía el useRoutes. Me parece más simple y permite las rutas anidadas. Vamos a ver como funciona eso

const AppRoutes = () => { let routes = useRoutes([ {path: '/', element: <Home/>}, {path: '/my-account', element: <MyAccount/>}, {path: '/my-order', element: <MyOrder/>}, {path: '/my-orders', element: <MyOrders/>}, {path: '/*', element: <NotFound/>}, {path: '/sign-in', element: <SignIn/>} ]); } En este ejemplo, el '/*' sirve para indicar que ese componente será el renderizado a cualquier otra ruta que no esté indicada en la variable 'routes'

Para usar react-router-dom (continuación): 2. Dentro de nuestro componente App const App = () => { return ( <BrowserRouter> <AppRoutes/> </BrowserRouter> ); }

Para usar react-router-dom: 1. Podemos crear una función fuera de nuestro componente, ejemplo function App () {...}, fuera de App declaramos const AppRoutes = () => { let routes = useRoutes([ { path: '/', element: <Home/> } ]); return routes; }

Para enlazar nuestras páginas con una ruta en específico usamos React Router Dom: 1. npm install react-router-dom 2. Importar en App con import { useRoutes, BrowserRouter } from 'react-router-dom';

React router es genial!!

Realice un cambio porque no me salia: hasta el intento TRES
Intento UNO

export const Home = () => {
  return <div className='bg-rose-300	'>Home</div>
}

Intento DOS

const Home = () => {
  return <div className='bg-rose-300	'>Home</div>
}
export { Home }

Intento TRES

const Home = () => {
  return <div className='bg-rose-300	'>Home</div>
}
export default Home

‘Routes’ <Ruts>

Que buena profesora es Stefany, clara y básica a la hora de explicar, primera vez que puedo entender las rutas. 😃

Me encantó, todo se instaló sin ningún problema.

Vaya que si es mas simple el proceso, ¡ME ENCANTA!

TYPESCRIPT: ![](https://static.platzi.com/media/user_upload/carbon-6dbeae4b-8bfe-442c-bfbf-32b2712c4ae7.jpg)