Dans ce chapitre je vous propose de découvrir une librairie incontournable lorsqu'il s'agit de récupérer des données tiers avec VueJS : TanStack Query.
00:00 Présentation
01:35 Installation de TanStack Query
02:00 La fonction useQuery()
09:50 Invalidation du cache
14:18 Les mutations (useMutation())
18:52 Pagination infinie (useInfiniteQuery())
Pourquoi cette librairie ?
Dans la plupart des cas une application front-end va avoir besoin de récupérer des données depuis un serveur et de les afficher à l'utilisateur mais plusieurs pages peuvent avoir besoin de même données et gérer cela via un état global peut s'avérer complexe. TanStack Query apporte un système de cache global qui permet de garder en mémoire les résultats d'une requête pour l'afficher instantanément à l'utilisateur lors de visites successives :
- Lors du premier chargement d'une ressource les données sont mises en mémoire et associées à une clef.
- Si la même requête est chargée, les données en cache sont utilisées pendant que TanStack Query demande les nouvelles données au serveur.
- Lorsque les nouvelles données arrivent, le cache est remplacé et la page est mise à jour.
Il est important de noter que TanStack Query n'a pas d'opinion sur comment vous récupérez les données. C'est à vous d'implémenter cette partie là. La librairie ne se charge que de la mise en cache et de proposer une fonction composable utile.
Utilisation
Pour commencer à utiliser TranStack Query on l'ajoute aux dépendances du projet.
Puis on l'ajoute comme plugin à notre projet VueJS
Une fois chargé, on pourra utiliser la fonction composable useQuery() pour gérer le chargement de nos contenus
La clef permet de retrouver la requête plus tard pour pouvoir invalider le cache ou le mettre à jour. Par défaut une requête est considérée comme "périmée" dès sa récupération mais il est possible de modifier ce comportement à l'aide du paramètre staleTime.
Pourquoi ces propriétés ?
- Un cache périmé est utilisé pendant que les nouvelles données sont récupérées, l'utilisateur voit les anciennes données pendant le chargement des nouvelles données.
- Un cache supprimé fait que l'utilisateur ne voit plus le contenu lors du second affichage d'une requête.
Mutation
Lorsque l'on souhaitera mettre à jour des données il sera possible d'utiliser la fonction composable useMutation().
Contrairement aux requêtes, une mutation ne s'exécute pas au montage du composant mais seulement lorsque la méthode mutate ou mutateAsync est appelée. Il n'y a pas non plus de mise en cache.
Invalidation
Le problème de la mise en cache est que les données peuvent changer lorsque l'utilisateur effectue certaines opérations (traitement de formulaire par exemple). Dans ce cas là il est possible d'invalider manuellement le cache depuis le client.
Il est aussi possible de venir modifier les données dans le cache pour un retour instantané auprès de l'utilisateur. L'inconvénient est qu'il faut s'assurer de le faire pour toutes les requêtes qui peuvent contenir les données.
Pagination infinie
Enfin, une dernière fonctionnalité intéressante de TanStack Query est la possibilité de mettre en place facilement une pagination infinie grâce à la fonction useInfiniteQuery().