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

250
Views
Redireccionamiento de React Router v6 cuando no hay ningún parámetro de cadena de consulta de URL

Necesito que el enrutador redireccione a la página "/" cuando la URL no tiene ningún parámetro queryString ( "/domain/search" ). Pero si tiene alguno, por ejemplo "/domain/search?keyword=something&page=1" , debería continuar y mostrar el componente Movies .

Mi código a continuación no funciona, todavía se redirige a "/" incluso si la URL tiene algunos parámetros queryString.

Por favor ayuda con este problema.

 <Routes> <Route path="/" element={<Layout />}> <Route index element={<Search />} /> <Route path="search" element={<Navigate to="/" />} /> <Route path="search/*" element={<Movies />} /> </Route> </Routes>
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Debe usar useSearchParams en el componente Movies para leer la cadena de consulta en la URL:

  1. Las Rutas:
 <Routes> <Route path="/" element={<Layout />}> <Route index element={<Search />} /> <Route path="search" element={<Movies />} /> </Route> </Routes>
  1. el componente Movies :
 import { Navigate, useSearchParams } from "react-router-dom"; function Movies(props) { const [searchParams, setSearchParams] = useSearchParams(); const page = searchParams.get("page"); const otherParam = searchParams.get("otherParam"); if(!page && !otherParam) { return <Navigate to="/" replace /> } // the rest of your component ... }

Editar inquieto-wildflower-959qx6

O usando URLSearchParams.keys()

 import { Navigate, useSearchParams } from "react-router-dom"; function Movies() { const [searchParams, setSearchParams] = useSearchParams(); if (![...searchParams.keys()].length) { return <Navigate to="/" replace />; } return <span>Movies page</span>; }

Editar prado-rojo-urtrbn

about 4 years ago · Juan Pablo Isaza Report

0

react-router-dom y el componente Route no usa ni hace referencia a la URL queryString al hacer coincidir las rutas. Esto es algo que el componente enrutado debe verificar o algo que puede crear un componente de ruta de diseño especial para manejar. El código debe usar el gancho useSearchParams para acceder a los parámetros de searchParams y verificar la existencia de cualquier parámetro.

Ejemplo:

Este ejemplo es una ruta de diseño que verifica la longitud de la matriz de entradas de los parámetros de búsqueda y, si hay entradas, se representa un componente de Outlet para cualquier componente de Route anidado para representar su element , de lo contrario, se representa una redirección de regreso a "/" .

 import { Navigate, Outlet, useSearchParams } from 'react-router-dom'; const ParamsRoute = () => { const [searchParams] = useSearchParams(); return searchParams.entries().length ? <Outlet /> : <Navigate to="/" replace /> };

Uso:

 <Routes> <Route path="/" element={<Layout />}> <Route index element={<Search />} /> <Route element={<ParamsRoute />}> <Route path="search" element={<Movies />} /> </Route> </Route> </Routes>

Tal vez desee que estén presentes parámetros específicos de queryString:

 import { Navigate, Outlet, useSearchParams } from 'react-router-dom'; const ParamsRoute = ({ params = [] }) => { const [searchParams] = useSearchParams(); return searchParams.entries().length // has params && params.every(param => searchParams.get(param)) // has required params ? <Outlet /> : <Navigate to="/" replace /> };
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!