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

244
Vistas
React Router: tener un componente de procesamiento condicional de ruta basado en el parámetro de búsqueda de URL

Aquí hay un ejemplo de escenario:

tengo dos componentes y

Los parámetros de búsqueda se ven así: ?A=123&B=456

La Ruta es así path="/home"

Quiero que A se cargue en la ruta si solo A está presente en los parámetros de búsqueda (por ejemplo, ?A=123), quiero que B se cargue si hay B en los parámetros de búsqueda (B también se carga si tanto A como B están en el parámetros de búsqueda).

¿Puedo hacer algo dentro del componente Ruta donde pueda tener un renderizado condicional basado en eso y cómo lo haría?

alias:

 <Route path="/home" if(urlparam.B){ render={<B/>} } else { render={<A/>} } </Route>

¿Cómo puedo pasar la url a la ruta para que pueda verificar?

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

0

No puede hacer esto en el componente Route , pero puede crear un componente contenedor para manejar esto.

Puede acceder a la cadena de search del objeto de location actual. Desde aquí puede crear un objeto URLSearchParams y acceder a los parámetros queryString y aplicar la lógica de representación condicional.

  • ubicación

    Las ubicaciones representan dónde se encuentra la aplicación ahora, dónde desea que vaya o incluso dónde estaba. Se parece a esto:

     { key: 'ac3df4', // not with HashHistory! pathname: '/somewhere', search: '?some=search-string', hash: '#howdy', state: { [userDefined]: true } }
  • URLSearchParams

Código

 const Wrapper = ({ location }) => { const { search } = location; const searchParams = new URLSearchParams(search); const hasAParam = searchParams.get("A"); const hasBParam = searchParams.get("B"); if (hasAParam && !hasBParam) { // only A and not B return <A />; } else if (hasBParam) { // only B return <B />; } return null; // render nothing };

...

 <Route path="/home" component={Wrapper} />

Esto supone que está utilizando react-router-dom@5 .

Si usa v6, use el gancho useSearchParams directamente.

usarSearchParams

Ejemplo:

 const Wrapper = () => { const [searchParams] = useSearchParams(); const hasAParam = searchParams.get("A"); const hasBParam = searchParams.get("B"); if (hasAParam && !hasBParam) { // only A and not B return <A />; } else if (hasBParam) { // only B return <B />; } return null; // render nothing };

...

 <Route path="/home" element={<Wrapper />} />
about 4 years ago · Juan Pablo Isaza Denunciar

0

prueba esto:

 <Route path="/home" render={urlparam?.B ? <B/> : <A/>} ></Route>

En este caso puedes usar el operador ternario para resolver tu problema

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