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

235
Visualizações
Apollo Client useQuery haciendo recuperaciones innecesarias en Next.js router.push

Estoy lidiando con un problema en el que una consulta dentro de un gancho useQuery Apollo Client se vuelve a ejecutar innecesariamente cada vez que se llama al router.push de router.push ( documentos aquí ).

El código abreviado es:

 const Parent = () => { useQuery(QUERY_HERE, { onCompleted: () => { console.log("just completed apollo query"); } }); return <Child />; } const Child = () => { const router = useRouter(); const currentArg = router.query?.currentArg; return ( <div> <button onClick={() => { if (currentArg === "on") { router.push("/?currentArg=off"); } else { router.push("/?currentArg=on"); } }} > Click me! </button> </div> ); };

Puede ver una reproducción en CodeSandbox aquí.

Mi expectativa es que cada vez que se haga clic en el botón (y, por lo tanto, se llame router.push ), la consulta no se debe volver a ejecutar. Sin embargo, se vuelve a ejecutar cada vez que se hace clic en el botón. Esto es sorprendente porque entiendo que una consulta de Apollo solo debe volver a ejecutarse cuando cambia una de sus variables.

¿Alguien sabe de una manera de asegurarse de que la consulta de Apollo no se vuelva a ejecutar?

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

0

Next.js vuelve a representar las páginas cuando se produce la navegación y, en su ejemplo, recrea Apollo Client cada vez que sucede. Luego, su componente useQuery se procesa nuevamente, verifica si el caché contiene datos para la consulta dada (no lo hace, ya que el nuevo cliente está vacío) y envía la consulta nuevamente.

Para solucionar esto, cree su ApolloClient en el ámbito global. De esta forma, se mantendrá estable y se podrá reutilizar entre múltiples consultas y renderizaciones.

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