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

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

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