useQuery pour récupérer des données
useQuery(QUERY), result, loading, error, variables et options fetchPolicy
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.
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
- Configurer Apollo Client dans Vue 3
- useQuery pour récupérer des données
- useMutation pour modifier des données
- Abonnements en temps réel avec useSubscription