0Pricing
Vue Academy · Leçon

useMutation pour modifier des données

useMutation(MUTATION), mutate(), stratégies de mise à jour du cache et réponses optimistes

useMutation pour modifier des données est une leçon Vue Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Vue Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Vue Academy comprend 4 leçons au total.

Modifier les données avec des mutations

Les requêtes lisent les données ; les mutations les modifient — création, mise à jour ou suppression. Le composable useMutation exécute une mutation GraphQL et vous fournit une fonction mutate à appeler lorsque vous êtes prêt.

Utilisation de base de useMutation

Passez un document de mutation. Contrairement à useQuery, il ne s’exécute pas immédiatement : il renvoie une fonction mutate que vous appelez lors d’un événement.

import { useMutation } from '@vue/apollo-composable'
import { gql } from '@apollo/client/core'

const { mutate } = useMutation(gql(
  'mutation { addPost { id } }'
))

Déclencher la mutation

Appelez mutate() depuis un gestionnaire d’événements, par exemple lors de la soumission d’un formulaire. Cette fonction renvoie une promesse qui se résout avec le résultat.

async function submit() {
  await mutate()
}

Transmettre des variables

Transmettez un objet de variables à mutate. Le document de mutation les déclare avec la syntaxe $.

const { mutate } = useMutation(gql(
  'mutation($title: String!) { addPost(title: $title) { id title } }'
))
function add(title) {
  return mutate({ title })
}

Chargement et erreur

useMutation renvoie également des références loading et error, afin que vous puissiez désactiver le bouton d’envoi et afficher les échecs.

<template>
  <button :disabled="loading" @click="submit">Save</button>
  <p v-if="error">{{ error.message }}</p>
</template>

Réagir en cas de réussite

Le crochet onDone se déclenche après une mutation réussie : vous pouvez vider un formulaire, afficher une notification temporaire ou quitter la page.

const { mutate, onDone } = useMutation(ADD_POST)
onDone((res) => {
  console.log('Created', res.data.addPost.id)
})

Mettre à jour le cache

Après une mutation, le cache Apollo peut être obsolète. La fonction update vous permet de modifier directement le cache afin que l’interface reflète le changement sans nouvelle récupération.

useMutation(ADD_POST, {
  update(cache, { data }) {
    const existing = cache.readQuery({ query: GET_POSTS })
    cache.writeQuery({
      query: GET_POSTS,
      data: { posts: [...existing.posts, data.addPost] }
    })
  }
})

Pourquoi la mise à jour est préférable à une nouvelle récupération

La mise à jour du cache avec update évite un aller-retour réseau supplémentaire. Le nouvel élément apparaît instantanément, car vous l’avez écrit dans le cache que chaque useQuery lit.

Relancer les requêtes à la place

Si la modification manuelle du cache est trop fastidieuse, utilisez refetchQueries pour réexécuter certaines requêtes une fois la mutation terminée.

useMutation(ADD_POST, {
  refetchQueries: [{ query: GET_POSTS }]
})

Réponses optimistes

Une optimisticResponse met à jour l’interface avant la réponse du serveur, en supposant que l’opération réussira. Si la requête échoue, Apollo annule automatiquement la modification.

mutate(
  { title: 'New' },
  {
    optimisticResponse: {
      addPost: { __typename: 'Post', id: 'temp', title: 'New' }
    }
  }
)

Pourquoi l’interface optimiste est importante

Les mises à jour optimistes donnent à l’application une impression d’instantanéité : l’utilisateur voit immédiatement l’effet de son action. Avec update, l’élément temporaire est remplacé par les véritables données du serveur dès leur arrivée.

Vérification rapide

Évaluez vos connaissances sur les mutations.

Récapitulatif

Vous avez appris les mutations :

  • useMutation renvoie une fonction de mutation que vous appelez lors d’événements.
  • Transmettez des variables à la fonction de mutation ; utilisez le chargement, l’erreur et onDone.
  • La fonction de mise à jour modifie le cache après une mutation et évite une nouvelle récupération.
  • optimisticResponse met instantanément à jour l’interface, avec une annulation automatique en cas d’échec.

Questions Fréquemment Posées

La leçon « useMutation pour modifier des données » est-elle gratuite ?

Oui — le texte complet de « useMutation pour modifier des données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Vue Academy, passe à CoddyKit PRO. Le cours Vue Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « useMutation pour modifier des données » ?

useMutation(MUTATION), mutate(), stratégies de mise à jour du cache et réponses optimistes Tu pratiques Vue Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Vue Academy ?

Aucune expérience préalable n'est requise. Vue Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « useMutation pour modifier des données » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Vue Academy ?

Oui. Chaque leçon Vue Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configurer Apollo Client dans Vue 3
  2. useQuery pour récupérer des données
  3. useMutation pour modifier des données
  4. Abonnements en temps réel avec useSubscription
← Retour à Vue Academy