Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!