⊗jsrxPmATADR 49 of 57 menu

Eliminacija duplih zahteva u Redux-u

Ova lekcija će nam biti korisna u slučaju da se pri pokretanju aplikacije duplira slanje zahteva za podacima, a zatim stižu parovi proizvoda sa identičnim id-jevima, i, kao posledica, pojavljuju se strašna crvena upozorenja (warnings) u konzoli brauzera.

Razlog za ovo leži u specifičnosti montiranja komponenti u React 18 verziji i višim u režimu razvoja (dev), kada se koristi React.StrictMode (kažu da je u production režimu sve u redu sa ovim). Prvo se komponenta montira, zatim demontira i ponovo montira. Zbog toga i zahtev se šalje dva puta.

Moguće je da će, dok budete proučavali ovaj materijal, ovo dvostruko montiranje u React-u već biti promenjeno na neki način. Nećemo duboko ulaziti u detalje, već ćemo za sada jednostavno iskoristiti React hook useRef, koji će nam pomoći da zaobiđemo ovu nedoumicu.

Hajde da otvorimo našu aplikaciju sa proizvodima, a u njoj fajl ProductsList.jsx. Importujmo u njega hook useRef:

import { useEffect, useRef } from 'react'

A sada malo izmenimo sledeći blok koda sa useEffect:

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

Za početak, uvodimo novu varijablu dataFetch za useRef. Inicijalno ćemo postaviti njeno svojstvo current na false. Ako se aplikacija već pokrenula i, shodno tome, zahtev je bio poslat, onda će svojstvo current već biti true, što znači da ćemo jednostavno izaći iz funkcije i ponovnog slanja zahteva neće biti. Dakle, gorepomenuti deo koda sada će izgledati ovako:

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

Sada ponovo pokrenimo našu aplikaciju i sa olakšanjem primetimo nestanak crvenih upozorenja u konzoli, i videćemo listu proizvoda bez duplikata, sada ih ima 8, kako smo i planirali na serveru. Sada se u Redux DevTools-u akcije, generisane prilikom zahteva, više ne ponavljaju.

Otvorite vašu aplikaciju sa studentima, a u njoj fajl StudentsList.jsx. Eliminišite problem sa dvostrukim zahtevom, u skladu sa materijalom sa lekcije, ako ga imate.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij