Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

394
Visualizações
Reaccionar: los parámetros de consulta están vacíos al cargar la página

Tengo un problema con la lógica de navegación en React y sería increíble obtener ayuda.

Tengo una aplicación web front-end escrita en TypeScript, React y Ionic Framework V5.

La aplicación tiene un cuadro de búsqueda bastante estándar que redirige a una página de resultados con la ubicación /search?query={query here} .

Cuando presiono el botón de búsqueda, React Router maneja la navegación. Soy redirigido a la página de resultados y la consulta de búsqueda aparece en la barra de direcciones del navegador, pero la cadena de consulta está vacía cuando se recupera en la lógica del componente funcional, lo que me da resultados de búsqueda incorrectos.

El cuadro de búsqueda dirige a la página de resultados así:

 <IonButton fill="clear" className="search-button" routerLink={`/search?query=${searchValue}`}> <IonIcon name="search-outline" /> </IonButton>
  • Tenga en cuenta que la propiedad routerLink es simplemente un asistente de Ionic para React Router, el problema es el mismo si encapsulo el botón en una etiqueta <Link/> normal.

En la página de búsqueda, la cadena de consulta se lee así:

 const Home: React.FC<SimplePageProps> = ({ axios }) => { const queryParams = useQuery(); const param = queryParams.get('query'); const [products, setProducts] = useState([]); useEffect(() => { axios.get(`/products?query=${param}`) .then((response) => { const data = camelcaseKeys(response.data, { deep: true }); setProducts(data.items.map((product: Product) => ( <IonCol key={product.id} size-md="4" size-xl="3"> <ProductCard product={product} /> </IonCol> ))); }) .catch((error) => { // TODO show error element console.error(error); }); }, [axios, param]);

Como se mencionó, la cadena de consulta está vacía cuando se obtiene en la lógica del componente funcional, lo que me da resultados de búsqueda incorrectos. Cuando actualizo la página, la cadena de consulta no está vacía y aparecen los resultados de la búsqueda. ¿Algunas ideas?

Muchas gracias de antemano!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de dormir en él y buscar un poco más, logré arreglar esto.

Mi solución fue reducir las cosas a un comando de JavaScript estándar, window.location.search . Esto siempre obtiene los parámetros de consulta correctos de la URL, mientras que los ganchos auxiliares de React Router no estarían undefined cuando se enrutaran por primera vez a la página.

useLocation() se incluye para que cuando se realice otra búsqueda desde la página de resultados, el componente React se vuelva a representar para reflejar la nueva cadena de consulta.

 const Home: React.FC<SimplePageProps> = ({ axios }) => { // parse query string parameter const { search } = window.location; const query = new URLSearchParams(search).get('query'); useLocation(); // including this forces a re-render when the URL changes const [products, setProducts] = useState([]); useEffect(() => { axios.get(`/products?query=${query}`) .then((response) => { const data = camelcaseKeys(response.data, { deep: true }); setProducts(data.items.map((product: Product) => ( <IonCol key={product.id} size-md="4" size-xl="3"> <ProductCard product={product} /> </IonCol> ))); }) .catch((error) => { // TODO show error element console.error(error); }); }, [axios, query]);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda