Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

132
Vistas
¿Por qué necesitamos envolver el BrowserRouter en el componente principal en lugar de enrutar el componente secundario para React.js enrutador v6?

Traté de crear el enlace useRoutes desde react-router-dom@6.4.1 para crear mis rutas de aplicaciones usando JS, así en mi route.jsx:

 import { useRoutes, } from "react-router-dom";
import TestPage from "../Pages/Public/TestPage";
import TestPageTwo from "../Pages/Public/TestPageTwo";

const.netirectRoutes = [
 {
 path: "/no-match",
 element: () => <div>No Match found</div>,
 },
];

const Router = () => {
 const router = useRoutes([
 {
 path: "/testPage",
 element: <TestPage />,
 loader: false,
 },
 {
 path: "/testPageTwo",
 element: <TestPageTwo />,
 loader: false,
 },
 ...netirectRoutes,
 ]);
 return <BrowserRouter>{router}</BrowserRouter>;
};

export default Router;

y en mi app.jsx, importé el archivo así:

 import { Provider } from "react.netux";
import Router from "./Router";
import initializeStore from "..netucer/initializeStore";
import "./App.css";

export const store = initializeStore();

const App = () => {
 return (
 <Provider store={store}>
 <Router />
 </Provider>
 );
};

export default App;

Esto resultó en el siguiente error:

Error no detectado: useRoutes() solo se puede usar en el contexto de un componente.

Como puede ver, envolví las rutas usando BrowserRouter en app.jsx, pero sigo recibiendo este error. Sin embargo, pude resolver esto cuando moví BrowserRouter a app.jsx en lugar de rutas. .jsx, así:

aplicación.jsx:

 ...
const App = () => {
 return (
 <Provider store={store}>
 <BrowserRouter>
 <Router />
 </BrowserRouter>
 </Provider>
 );
};
...

y, en rutas.jsx, solo devuelvo el enrutador que se crea usando useRoutes();

No entiendo por qué necesitamos envolver el BrowserRouter de react-router-dom@6 en app.jsx de esta manera en lugar de route.jsx.

almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En react-router y react-router-dom los componentes del enrutador son el componente que proporciona un contexto de enrutamiento para que accedan todos los enlaces y componentes RRD. Es un contexto React y debe proporcionarse más arriba en ReactTree que cualquiera de los componentes que lo consumen.

no funciona:

 const Router = () => {
 const router = useRoutes([ // <-- accessed here outside context, error!!
 ....
 ]);
 return <BrowserRouter>{router}</BrowserRouter>; // <-- provided here
};

...

const App = () => {
 return (
 <Provider store={store}>
 <Router />
 </Provider>
 );
};

Obras:

 const Router = () => {
 const router = useRoutes([ // <-- accessed here inside context, no issue :)
 ....
 ]);
 return router;
};

...

const App = () => {
 return (
 <Provider store={store}>
 <BrowserRouter> // <-- provided here
 <Router />
 </BrowserRouter>
 </Provider>
 );
};

Consulte API de contexto de reacción para obtener más detalles.

almost 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda