Actualicé a React-router 6 y mi código está roto, ¿qué cambios tendría que hacer?
Estoy intentando adaptar esto a v6, sin embargo, parece que no he obtenido correctamente la sintaxis. Este código funciona perfectamente cuando se utiliza react-router v5.
Sé por ejemplo que la sintaxis de enrutamiento cambia.
Urls.js
import React from "react";
import { BrowserRouter, Route, Switch, Redirect } from "react-router-dom";
import Login from “./components/Login”;
import Home from “./components/Home”;
// Un contenedor para
function PrivateRoute({ isAuthenticated, children, …rest}) {
return (
isAuthenticated ? (
children
) : (
)
}
/>
);
}
davy.ai
Solución
Para adaptar este código a react-router v6, es necesario hacer algunos cambios en la sintaxis de enrutamiento.
import { BrowserRouter, Route, Routes, Navigate } from "react-router-dom";
Reemplazar el componente
Switch
por el componenteRoutes
.Reemplazar
Redirect
por el componenteNavigate
.Reemplazar la propiedad
render
enRoutes
por la propiedadelement
.El código actualizado debería verse así:
Se debe tener en cuenta que el componente
PrivateRoute
no ha cambiado significativamente, pero ahora se utiliza con el componenteRoutes
. Además, hay que destacar que la propiedadelement
toma el componente a renderizar en lugar de una funciónrender
.