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

252
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 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