⊗jsrtPmRtNS 43 of 47 menu

État de navigation dans React Router

Si nous cliquons sur les produits dans la liste, nous voyons que la première fois, la page du produit se charge avec un délai, et les fois suivantes rapidement, la même chose se produit lors de l'ajout et de la mise à jour d'un produit, puisque nous avons un cache côté client.

Dans cette leçon, nous montrerons à l'utilisateur dans quel état se trouve notre page. Le hook useNavigation peut nous y aider. Ce hook renvoie comme résultat un objet avec une série de propriétés. L'une d'elles nous intéressera particulièrement - la propriété state.

La propriété state peut avoir 3 valeurs : 'idle' (rien ne se passe), 'submitting' (lors de l'envoi d'un formulaire via POST, PUT, PATCH ou DELETE, l'action de la route est appelée), 'loading' (lorsque le chargeur pour la route suivante est appelé pour afficher la page suivante). La dernière valeur nous intéressera.

Allons dans le fichier root.jsx et importons ce hook :

import { useNavigation } from 'react-router-dom';

Ensuite, pour le résultat renvoyé par le hook, déclarons une variable navigation dans la fonction Root - avant le return :

const { products } = useLoaderData(); const navigation = useNavigation();

Et maintenant, utilisons sa propriété state, si c'est la valeur 'loading', alors nous définirons la classe loading pour la div dans laquelle nos données produit sont affichées :

<div id="product" className={navigation.state === 'loading' ? 'loading' : ''}> <Outlet /> </div>

Il ne nous reste plus qu'à ajouter des styles pour la classe loading dans index.css. Dans le cas d'un état de chargement, augmentons simplement l'opacity :

div.loading { opacity: 0.3; }

Maintenant, si, après avoir rechargé le site, nous cliquons sur les produits dans la liste ou, par exemple, ajoutons un nouveau produit, nous verrons que la page actuelle deviendra pâle pendant un moment, avant que la suivante n'apparaisse.

Prenez l'application que vous avez créée dans les tâches des leçons précédentes. En utilisant le matériel de la leçon, à l'aide du hook useNavigation, faites en sorte que l'utilisateur puisse voir que la page suivante avec les données de l'étudiant est en cours de chargement.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser