⊗jsrxPmATADR 49 of 57 menu

Eliminering av duplisert forespørsel i Redux

Denne leksjonen vil være nyttig for oss i tilfellet der det dupliseres sending av dataforespørsel når applikasjonen starter, og deretter kommer det par av produkter med samme id, og som følge av dette vises skumle røde advarsler i konsollen til nettleseren.

Årsaken til dette ligger i egenskapen ved montering av komponenter i React 18 og høyere i utviklingsmodus (dev), når man bruker React.StrictMode (de sier at i produksjonsmodus er alt i orden med dette). Først monteres komponenten, deretter demonteres den og monteres på nytt. Derfor sendes forespørselen to ganger.

Det er mulig at når du studerer dette stoffet, vil denne doble monteringen i React allerede være endret på en eller annen måte. Vi vil ikke fordype oss i djungelen, men bare bruke React-hooken useRef, som vil hjelpe oss å omgå denne misforståelsen.

La oss åpne applikasjonen vår med produkter, og i den filen ProductsList.jsx. Importer hooken useRef i den:

import { useEffect, useRef } from 'react'

Og la oss nå endre følgende kodeblokk med useEffect litt:

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

Til å begynne med, la oss introdusere en ny variabel dataFetch for useRef. Initialt setter vi dens egenskap current til false. Hvis applikasjonen allerede har startet og følgelig forespørselen ble sendt, vil egenskapen current allerede være true, no som betyr at vi bare vil avslutte funksjonen og ingen gjentakende forespørsel etter data vil skje. Så, den nevnte kodesnutten vil nå se slik ut:

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

La oss nå starte applikasjonen vår på nytt og med lettelse konstatere at de røde advarslene i konsollen har forsvunnet, og vi ser listen over produkter uten duplikater, nå er det 8 av dem, slik som vi planla på serveren. Nå i Redux DevTools gjentas ikke handlingene som genereres under forespørselen lenger.

Åpne applikasjonen din med studenter, og i den filen StudentsList.jsx. Eliminer problemet med dobbel forespørsel, i henhold til leksjonens stoff, hvis du har et slikt problem.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis