apollographql/apollo-client

Guide pour créer des applications React avec Apollo Client 4.x. Utilisez cette compétence pour : (1) configurer Apollo Client dans un projet React, (2) écrire des requêtes ou mutations GraphQL avec des hooks, (3) configurer le cache ou les politiques de cache, (4) gérer l'état local avec des variables réactives, (5) résoudre les erreurs ou problèmes de performance liés à Apollo Client.

Qu'est-ce que apollo-client ?

Cette compétence fournit un guide complet pour intégrer Apollo Client 4.x dans des applications React. Elle aide les développeurs à configurer Apollo Client avec des fournisseurs (ApolloProvider) et à créer des composants React qui interagissent avec des API GraphQL via des hooks comme `useQuery` et `useMutation`. Elle couvre la configuration avancée du cache normalisé (InMemoryCache), y compris les politiques de cache (`fetchPolicy`) et la mise à jour du cache après des mutations. Elle traite également de la gestion de l'état local à l'aide de variables réactives (`makeVar`) et de la combinaison d'état local et distant. Enfin, elle offre des conseils pour le débogage des problèmes courants (erreurs réseau, re-rendus excessifs, invalidation de cache) et l'optimisation des performances. Cette compétence est utile pour tout projet React utilisant Apollo Client, que ce soit avec Create React App, Next.js, ou d'autres frameworks React modernes.

Compatible avec~Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add https://github.com/apollographql/skills/tree/main/skills/apollo-client

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait apollo-client ?

Guide pour créer des applications React avec Apollo Client 4.x. Utilisez cette compétence pour : (1) configurer Apollo Client dans un projet React, (2) écrire des requêtes ou mutations GraphQL avec des hooks, (3) configurer le cache ou les politiques de cache, (4) gérer l'état local avec des variables réactives, (5) résoudre les erreurs ou problèmes de performance liés à Apollo Client.

Introduction

Apollo Client est une bibliothèque de gestion d'état complète pour JavaScript. Elle vous permet de gérer à la fois les données locales et distantes avec GraphQL, et de les utiliser pour construire des interfaces utilisateur.

Installation

npm install @apollo/client graphql

@apollo/client inclut le client lui-même, le cache en mémoire, et les hooks React. graphql est une dépendance nécessaire pour analyser les requêtes GraphQL.

Configuration de base

Création du client

import { ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client';

const client = new ApolloClient({
  uri: 'https://api.example.com/graphql',
  cache: new InMemoryCache(),
});

Intégration avec React

import React from 'react';
import { ApolloProvider } from '@apollo/client';

function App() {
  return (
    <ApolloProvider client={client}>
      <div>
        <h2>Mon application</h2>
      </div>
    </ApolloProvider>
  );
}

Requêtes GraphQL

Utilisation du hook useQuery

import { useQuery, gql } from '@apollo/client';

const GET_DOGS = gql`
  query GetDogs {
    dogs {
      id
      breed
    }
  }
`;

function Dogs({ onDogSelected }) {
  const { loading, error, data } = useQuery(GET_DOGS);

  if (loading) return <p>Chargement...</p>;
  if (error) return <p>Erreur : {error.message}</p>;

  return (
    <select name="dog" onChange={onDogSelected}>
      {data.dogs.map((dog) => (
        <option key={dog.id} value={dog.breed}>
          {dog.breed}
        </option>
      ))}
    </select>
  );
}

Mutations GraphQL

Utilisation du hook useMutation

import { useMutation, gql } from '@apollo/client';

const ADD_TODO = gql`
  mutation AddTodo($type: String!) {
    addTodo(type: $type) {
      id
      type
    }
  }
`;

function AddTodo() {
  let input;
  const [addTodo, { data }] = useMutation(ADD_TODO);

  return (
    <div>
      <form
        onSubmit={e => {
          e.preventDefault();
          addTodo({ variables: { type: input.value } });
          input.value = '';
        }}
      >
        <input
          ref={node => {
            input = node;
          }}
        />
        <button type="submit">Ajouter une tâche</button>
      </form>
    </div>
  );
}

Configuration du cache

Apollo Client utilise un cache normalisé (InMemoryCache) pour stocker les résultats des requêtes. Vous pouvez configurer les politiques de cache pour contrôler le comportement de mise en cache.

Politiques de requête

const { loading, error, data } = useQuery(GET_DOGS, {
  fetchPolicy: 'cache-and-network', // Valeur par défaut : 'cache-first'
});

Les politiques disponibles :

  • cache-first : Vérifie d'abord le cache ; si les données existent, les renvoie, sinon les récupère depuis le réseau.
  • cache-and-network : Renvoie toujours les données du cache (si disponibles) et récupère en arrière-plan les mises à jour.
  • network-only : Ignore le cache et récupère toujours depuis le réseau.
  • cache-only : Renvoie uniquement les données du cache ; ne fait jamais de requêtes réseau.
  • no-cache : Récupère depuis le réseau, mais ne met pas en cache la réponse.
  • standby : Utilisé pour les requêtes qui ne doivent pas être mises à jour automatiquement.

Gestion de l'état local

Apollo Client permet de gérer l'état local à l'aide de variables réactives.

Création d'une variable réactive

import { makeVar } from '@apollo/client';

export const cartItemsVar = makeVar([]);

Lecture et mise à jour d'une variable réactive

import { cartItemsVar } from './cache';

// Lecture
const cartItems = cartItemsVar();

// Mise à jour
cartItemsVar([...cartItems, { id: 1, name: 'Nouvel article' }]);

Utilisation dans les requêtes

import { useReactiveVar } from '@apollo/client';

function Cart() {
  const cartItems = useReactiveVar(cartItemsVar);

  return (
    <ul>
      {cartItems.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
}

Dépannage

Erreurs réseau

  • Vérifiez que l'URL de votre API GraphQL est correcte.
  • Utilisez les outils de développement (DevTools) de votre navigateur pour inspecter les requêtes réseau.
  • Assurez-vous que les en-têtes d'authentification sont correctement définis.

Performances

  • Utilisez la politique cache-first pour éviter des requêtes réseau inutiles.
  • Évitez les re-rendus excessifs en optimisant vos composants.
  • Utilisez useQuery avec des options comme skip pour éviter des requêtes inutiles.

Invalidation du cache

  • Si les données du cache ne sont pas à jour, utilisez refetchQueries ou client.refetch.
  • Utilisez update dans useMutation pour mettre à jour le cache localement après une mutation.

Pour plus d'informations, consultez la documentation officielle d'Apollo Client.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

apollographql/apollo-connectors

Guide for integrating REST APIs into GraphQL supergraphs using Apollo Connectors with @source and @connect directives. Use this skill when the user: (1) mentions "connectors", "Apollo Connectors", or "REST Connector", (2) wants to integrate a REST API into GraphQL, (3) references @source or @connect directives, (4) works with files containing "# Note to AI Friends: This is an Apollo Connectors schema".

apollographql/apollo-federation

Guide for authoring Apollo Federation subgraph schemas. Use this skill when: (1) creating new subgraph schemas for a federated supergraph, (2) defining or modifying entities with @key, (3) sharing types/fields across subgraphs with @shareable, (4) working with federation directives (@external, @requires, @provides, @override, @inaccessible), (5) troubleshooting composition errors, (6) any task involving federation schema design patterns.

apollographql/apollo-mcp-server

Guide for using Apollo MCP Server to connect AI agents with GraphQL APIs. Use this skill when: (1) setting up or configuring Apollo MCP Server, (2) defining MCP tools from GraphQL operations, (3) using introspection tools (introspect, search, validate, execute), (4) troubleshooting MCP server connectivity or tool execution issues.

apollographql/apollo-router

Version-aware guide for configuring and running Apollo Router for federated GraphQL supergraphs. Generates correct YAML for both Router v1.x and v2.x. Use this skill when: (1) setting up Apollo Router to run a supergraph, (2) configuring routing, headers, or CORS, (3) implementing custom plugins (Rhai scripts or coprocessors), (4) configuring telemetry (tracing, metrics, logging), (5) troubleshooting Router performance or connectivity issues.

apollographql/apollo-server

Guide for building GraphQL servers with Apollo Server 5.x. Use this skill when: (1) setting up a new Apollo Server project, (2) writing resolvers or defining GraphQL schemas, (3) implementing authentication or authorization, (4) creating plugins or custom data sources, (5) troubleshooting Apollo Server errors or performance issues.

apollographql/graphql-operations

Guide for writing GraphQL operations (queries, mutations, fragments) following best practices. Use this skill when: (1) writing GraphQL queries or mutations, (2) organizing operations with fragments, (3) optimizing data fetching patterns, (4) setting up type generation or linting, (5) reviewing operations for efficiency.

apollographql/graphql-schema

Guide for designing GraphQL schemas following industry best practices. Use this skill when: (1) designing a new GraphQL schema or API, (2) reviewing existing schema for improvements, (3) deciding on type structures or nullability, (4) implementing pagination or error patterns, (5) ensuring security in schema design.

apollographql/rover

Guide for using Apollo Rover CLI to manage GraphQL schemas and federation. Use this skill when: (1) publishing or fetching subgraph/graph schemas, (2) composing supergraph schemas locally or via GraphOS, (3) running local supergraph development with rover dev, (4) validating schemas with check and lint commands, (5) configuring Rover authentication and environment, (6) exploring or searching a graph's schema for agent-driven discovery (rover schema describe / rover schema search).

apollographql/rust-best-practices

Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook. Use this skill when: (1) writing new Rust code or functions, (2) reviewing or refactoring existing Rust code, (3) deciding between borrowing vs cloning or ownership patterns, (4) implementing error handling with Result types, (5) optimizing Rust code for performance, (6) writing tests or documentation for Rust projects.

Skills associés