Vue Academy · Leçon

useQuery pour récupérer des données

useQuery(QUERY), result, loading, error, variables et options fetchPolicy

Leçon 2 sur 413 étapes

useQuery pour récupérer des données est une leçon Vue Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Interroger avec useQuery

Le composable useQuery exécute une requête GraphQL et renvoie un état réactif. Il relance automatiquement la récupération lorsque les variables changent et se met à jour lorsque le cache change.

Utilisation de base

Passez un document gql. useQuery renvoie les refs result, loading et error.

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

const { result, loading, error } = useQuery(gql(
  'query { posts { id title } }'
))

Lire le résultat

result est une ref. Accédez aux données via result.value : elles contiennent la réponse de la requête, structurée exactement comme celle-ci.

const posts = computed(() => result.value?.posts ?? [])

États de chargement et d’erreur

Utilisez loading pour afficher un indicateur de chargement et error pour afficher un message. Ces deux refs réactives se mettent à jour à mesure que la requête progresse.

<template>
  <p v-if="loading">Loading...</p>
  <p v-else-if="error">{{ error.message }}</p>
  <ul v-else>
    <li v-for="p in posts" :key="p.id">{{ p.title }}</li>
  </ul>
</template>

Variables de requête

Passez les variables comme deuxième argument. La requête est relancée chaque fois que la valeur d’une variable change.

const { result } = useQuery(
  gql('query($id: ID!) { post(id: $id) { title } }'),
  { id: 1 }
)

Variables réactives

Pour les variables dynamiques, passez une fonction qui renvoie l’objet de variables ou une ref réactive. Lorsqu’une ref référencée change, la requête est automatiquement relancée.

const id = ref(1)
const { result } = useQuery(
  gql('query($id: ID!) { post(id: $id) { title } }'),
  () => ({ id: id.value })
)

Le hook onResult

onResult s’exécute chaque fois que de nouvelles données arrivent — pratique pour les effets secondaires comme l’analytique ou la synchronisation avec un autre magasin d’état.

const { onResult } = useQuery(QUERY)
onResult((res) => {
  console.log('Got', res.data)
})

Relancer manuellement la requête

useQuery renvoie une fonction refetch qui relance la requête à la demande — après une modification externe ou depuis un bouton d’actualisation.

const { result, refetch } = useQuery(QUERY)
function reload() { refetch() }

Pagination avec fetchMore

fetchMore charge des pages supplémentaires et les fusionne avec le résultat existant à l’aide de updateQuery — c’est la base du défilement infini.

const { result, fetchMore } = useQuery(QUERY, { offset: 0 })
function loadMore() {
  fetchMore({
    variables: { offset: result.value.posts.length },
    updateQuery: (prev, { fetchMoreResult }) => ({
      posts: [...prev.posts, ...fetchMoreResult.posts]
    })
  })
}

Stratégies de récupération

L’option fetchPolicy contrôle l’utilisation du cache : cache-first (par défaut) lit le cache avant le réseau, network-only interroge toujours le serveur et cache-and-network affiche le cache avant de l’actualiser.

useQuery(QUERY, null, {
  fetchPolicy: 'cache-and-network'
})

Requêtes conditionnelles

Utilisez l’option enabled pour retarder une requête jusqu’à ce qu’une condition soit remplie — par exemple, ne pas récupérer les données tant qu’un id n’est pas sélectionné.

const id = ref(null)
useQuery(QUERY, () => ({ id: id.value }), {
  enabled: computed(() => id.value !== null)
})

Vérification rapide

Vérifiez vos connaissances sur useQuery.

Récapitulatif

Vous avez découvert useQuery :

  • Il renvoie result, loading et error sous forme réactive.
  • Lisez les données via result.value.
  • Passez les variables sous forme d’objet ou de fonction pour bénéficier de la réactivité.
  • La fonction de nouvelle récupération relance la requête, fetchMore() gère la pagination et fetchPolicy contrôle l’utilisation du cache.
Gratuit pour commencer

Apprends HTML avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
42
Leçons
156

Questions Fréquemment Posées

La leçon « useQuery pour récupérer des données » est-elle gratuite ?

Oui — le texte complet de « useQuery pour récupérer 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 « useQuery pour récupérer des données » ?

useQuery(QUERY), result, loading, error, variables et options fetchPolicy 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 2 sur 4.

Combien de temps prend la leçon « useQuery pour récupérer 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