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

147
Visualizações
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 Respostas
Responde à pergunta

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