Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!