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

160
Visualizações
Llamar condicionalmente a una API usando el enlace React-Query

Estoy usando react-query para hacer llamadas a la API y, en este caso problemático, solo quiero llamar a la API si se cumplen ciertas condiciones.

Tengo un cuadro de entrada donde los usuarios ingresan una consulta de búsqueda. Cuando se cambia el valor de entrada, se llama a un servidor de búsqueda con el contenido de la entrada como consulta de búsqueda... pero solo si el valor de entrada tiene más de 3 caracteres.

En mi componente de reacción estoy llamando:

 const {data, isLoading} = useQuery(['search', searchString], getSearchResults);

Y mi función getSearchResults hará, condicionalmente, una llamada a la API.

 const getSearchResults = async (_, searchString) => { if (searchString.length < 3) return {data: []} const {data} = await axios.get(`/search?q=${searchString}`) return data; }

No podemos usar un enlace dentro de un condicional, así que puse la condición en mi función de llamada API.

Esto casi funciona. Si ingreso una cadena de consulta corta, no se realiza ninguna solicitud de API y obtengo una matriz vacía para los data . ¡Hurra!

Pero, isLoading cambiará a true brevemente, aunque no se esté realizando una solicitud HTTP. Entonces mi indicador de carga muestra cuando no hay actividad real en la red.

¿Estoy malinterpretando cómo resolver mejor mi caso de uso? ¿Hay alguna forma de asegurar que isLoading devolverá falso si no hay actividad HTTP?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La clave era usar consultas dependientes

Entonces, en mi componente principal, creo un valor booleano y lo paso a la opción enabled del gancho useQuery :

 const isLongEnough = searchString.length < 3; const {data, isLoading} = useQuery(['search', searchString], getSearchResults, {enabled: isLongEnough});

y el método de llamada a la API es simplemente la llamada a la API, no condicional:

 const getSearchResults = async (_, searchString) => { const {data} = await axios.get(`/search?q=${searchString}`); return data; }

Los documentos describen consultas dependientes como una solución para cargar datos desde puntos finales de API posteriores, pero la opción enable puede aceptar cualquier valor booleano. En este caso, si la cadena de consulta de búsqueda es lo suficientemente larga.

over 4 years ago · Santiago Trujillo 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