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

143
Vistas
La función de combinación personalizada no se llama después de actualizar el campo con cache.modify

He escrito una función de combinación personalizada para los products de campo en el tipo Session . Parece que la función de combinación solo se llama cuando inicializo el objeto Session:1 con sus products , y no cuando actualizo los products más tarde usando cache.modify .

Mi función de combinación:

 const client = new ApolloClient({ uri: 'http://localhost:8081/graphql', cache: new InMemoryCache({ typePolicies: { Session: { fields: { products: { merge (existing, incoming) { // this is only being called on useQuery(HydrateSession), not useMutation(UpsertProduct) console.log('existing', JSON.stringify(existing, null, 2)) console.log('incoming', JSON.stringify(incoming, null, 2)) // remove duplicates when latestProduct has the same id as an existing product — [..., latestProduct] if (incoming.filter(p => p.id === incoming[incoming.length - 1].id).length > 1) return existing return incoming } } } } } }) })

Inicialización de Session :

 const HydrateSession = gql` query { session { id products { id } } } ` ... useQuery(HydrateSession)

Actualización de products más tarde usando cache.modify :

 const UpsertProduct = gql` mutation UpsertProduct($product: ProductInput!) { upsertProduct(product: $product) { id } } ` ... const [upsertProductMutation] = useMutation(UpsertProduct) const onClick = async () => { await upsertProductMutation({ variables: { product: { id: 2 } }, update: (cache, mutationResult) => { cache.modify({ id: 'Session:1', fields: { products: previous => [...previous, mutationResult.data.upsertProduct] } }) } }) }

Tengo un ejemplo de trabajo completo aquí https://github.com/jsindos/apollo-play , ejecute npm i y luego inicie dos procesos separados con npm start y npm serve . Después de hacer clic en el botón que activa la mutación, la función de combinación no se ejecuta (como se ve por la ausencia de declaraciones de console.log en la consola).

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

modify elude cualquier función de combinación que haya definido, lo que significa que los campos siempre se sobrescriben con exactamente los valores que especifique.

  • https://www.apollographql.com/docs/react/caching/cache-interaction/#using-cachemodify

Leer la documentación es algo bueno.

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