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

148
Vistas
React-Query / React Router V5 inserta la variable de estado de la respuesta api en la ruta, pero solo cuando la respuesta ha terminado

En mi aplicación, tengo una llamada API que obtiene algunos datos (matriz de objetos), luego uso esto en un contexto y lo comparto en mi aplicación. Lo que quiero hacer es usar algunos de esos datos, es decir, el valor del objeto y prefijarlo en mis rutas. El manejo de la API se realiza a través de react-query.

He intentado simplemente acceder a la variable e insertarla de la siguiente manera:

 const Routing: React.FunctionComponent = () => { const { valueFromContext } = React.useContext(DataContext); const basePrefix = valueFromContext?.name; return ( <> <BrowserRouter > <Header /> <div className="App"> <Switch> <Route exact path={["/", "/dashboard"]}> <Redirect to={`/${basePrefix}/home`} /> </Route> <Route exact path={[`/${basePrefix}/home`, "/"]} component={Home} /> <Route exact path={`/account/:id`} render={(props: RouteComponentProps<any>) => <Account {...props} />} /> <Route component={NotFound} /> </Switch> </div> </BrowserRouter> </> ) }

Entonces, el problema es que esto es inconsistente, ya que a veces la url regresa como '/ indefinido / inicio' y muestra el componente 404 no encontrado, entonces creo que la ruta se inserta antes de que finalice la respuesta.

¿Algunas ideas?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Sí, parece que en el ciclo de renderizado inicial basePrefix o valueFromContext?.name produce un valor indefinido. Puede aplicar alguna lógica de representación condicional para devolver un indicador null o de carga mientras se recupera/calcula el valor basePrefix .

Ejemplo:

 const Routing: React.FunctionComponent = () => { const { valueFromContext } = React.useContext(DataContext); const basePrefix = valueFromContext?.name; return basePrefix ? ( <BrowserRouter > <Header /> <div className="App"> <Switch> <Route exact path={["/", "/dashboard"]}> <Redirect to={`/${basePrefix}/home`} /> </Route> <Route exact path={[`/${basePrefix}/home`, "/"]} component={Home} /> <Route exact path={`/account/:id`} render={(props: RouteComponentProps<any>) => <Account {...props} />} /> <Route component={NotFound} /> </Switch> </div> </BrowserRouter> ) : null; // <-- or loading indicator/spinner/etc }

En su pregunta estrechamente relacionada aquí, observe que proporcioné un valor de baseprefix definido válido del contexto por este motivo, para no inyectar accidentalmente undefined en la ruta de la URL.

about 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda