⊗jsrxPmATADR 49 of 57 menu

Élimination de la duplication de requête dans Redux

Cette leçon nous sera utile dans le cas où, au lancement de l'application, l'envoi de la requête de données est dupliqué, et où des paires de produits avec les mêmes id arrivent ensuite, entraînant l'apparition de terribles avertissements rouges dans la console du navigateur.

La raison de cela réside dans une particularité du montage des composants dans React 18 et supérieur en mode développement (dev), lors de l'utilisation de React.StrictMode (on dit qu'en mode production, tout va bien avec cela). D'abord, le composant est monté, puis démonté et remonté. C'est pourquoi la requête est envoyée deux fois.

Il est possible que lorsque vous étudierez ce contenu, ce double montage dans React ait déjà été modifié d'une manière ou d'une autre. Nous n'allons pas nous aventurer dans les détails techniques, mais simplement utiliser le hook React useRef, qui nous aidera à contourner ce problème.

Ouvrons notre application avec les produits, et dans celle-ci, le fichier ProductsList.jsx. Importons-y le hook useRef :

import { useEffect, useRef } from 'react'

Et maintenant, modifions légèrement le bloc de code suivant avec useEffect :

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Pour commencer, introduisons une nouvelle variable dataFetch pour useRef. Initialement, définissons sa propriété current à false. Si l'application a déjà été lancée et, par conséquent, la requête a été envoyée, alors la propriété current sera déjà à true, ce qui signifie que nous quitterons simplement la fonction et aucune nouvelle requête de données n'aura lieu. Ainsi, le morceau de code mentionné ci-dessus sera maintenant comme suit :

const dataFetch = useRef(false) useEffect(() => { if (dataFetch.current) return dataFetch.current = true if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Maintenant, relançons notre application et constatons avec soulagement la disparition des avertissements rouges dans la console, et voyons la liste des produits sans doublons, maintenant il y en a 8, comme nous l'avions prévu sur le serveur. Maintenant, dans Redux DevTools, les actions générées lors de la requête ne se répètent plus.

Ouvrez votre application avec les étudiants, et dans celle-ci, le fichier StudentsList.jsx. Éliminez le problème de double requête, selon le contenu de la leçon, si vous en avez un.

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