Cache Normalizat în Clienții GraphQL: Apollo Client In-Memory Cache și Fetch Policies în GraphQL

Ghid complet pentru cache-ul din Apollo Client: mecanismul de normalizare bazat pe __typename și id, diferența dintre fetchPolicy: cache-first și network-only, și actualizările optimiste (Optimistic UI).

Sintaxă
const client = new ApolloClient({ cache: new InMemoryCache() }); fetchPolicy: 'cache-and-network'

Spre deosebire de un cache HTTP REST care memorează URL-uri întregi, InMemoryCache din Apollo Client descompune răspunsurile primite în entități unice identificate prin formula __typename:id. Dacă un obiect este actualizat într-o mutație, toate ecranele din aplicație care afișează acel obiect se actualizează automat fără un nou apel de rețea!

Politici de preluare (Fetch Policies) în Apollo Client
import { useQuery, gql } from '@apollo/client';

const GET_NOTIFICARI = gql`
    query GetNotificari {
        notificari {
            id
            mesaj
            citit
        }
    }
`;

function ComponentaNotificari() {
    const { data, loading } = useQuery(GET_NOTIFICARI, {
        // Politica 'cache-and-network':
        // 1. Returnează instant datele existente în cache pentru experiență fluidă.
        // 2. Lansează în fundal cererea de rețea și actualizează UI-ul când sosește răspunsul proaspăt.
        fetchPolicy: 'cache-and-network',
        pollInterval: 10000 // re-interogare la fiecare 10 secunde
    });

    if (loading && !data) return <p>Se încarcă...</p>;
    return <ul>{data?.notificari.map(n => <li key={n.id}>{n.mesaj}</li>)}</ul>;
}
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Cache Normalizat în Clienții GraphQL: Apollo Client In-Memory Cache și Fetch Policies

Ai o nelămurire despre utilizarea comenzii Cache Normalizat în Clienții GraphQL: Apollo Client In-Memory Cache și Fetch Policies sau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!

💬

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.