• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

123
Vistas
Reaccionar agregar una ruta después de que se haya cargado la página

Tengo una API con una lista de nombres (que podría cambiar). Luego, quiero crear rutas a partir de esa lista, pero sigo recibiendo un error de ruta no encontrada. Sin embargo, al agregar manualmente la ruta para un nombre, funciona. ¿Cómo agrego una ruta después de que la página se haya cargado para que funcione? Este es mi código a continuación

 function App() { let json =[] fetch(`${baseURL}/applications/`).then(response =>{return response.json();}).then(data =>{json=data}) console.log("json =", json) return ( <Router> <div className="App"> <header className="App-header"> <Routes> <Route path="/" exact element={<ApplicationsList/>}/> <Route path={"/1080p-Lock"} exact element={<ApplicationPage name={"1080p-Lock"}/>}/> {json.map(item => {ReactDOM.render(<Route path={"/" + item} exact element={<ApplicationPage name={item}/>}/>)})} </Routes> </header> </div> </Router> ); }
over 3 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Tema

La función de procesamiento de React es una función sincrónica y pura, no puede esperar a que se complete la lógica asincrónica. El valor json se restablece a una matriz vacía en cada ciclo de procesamiento.

El mapeo de rutas solo necesita devolver los componentes de la Route que deben renderizarse, usar ReactDOM aquí no es muy válido.

Solución

Use el estado del componente para almacenar los datos obtenidos y un useEffect de montaje para realizar la solicitud de recuperación.

 function App() { const [routes, setRoutes] = useState([]); useEffect(() => { fetch(`${baseURL}/applications/`) .then(response => { return response.json(); }) .then(data => { setRoutes(data); }) .catch(error => { // handle any rejected Promises, etc... }); }, []); return ( <Router> <div className="App"> <header className="App-header"> <Routes> <Route path="/" element={<ApplicationsList/>}/> <Route path={"/1080p-Lock"} element={<ApplicationPage name={"1080p-Lock"}/>}/> {routes.map(item => ( <Route path={"/" + item} element={<ApplicationPage name={item}/>}/> ))} </Routes> </header> </div> </Router> ); }
over 3 years ago · Juan Pablo Isaza 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda