⊗jsrxPmATADR 49 of 57 menu

Redux'ta Yinelenen İsteklerin Ortadan Kaldırılması

Bu ders, uygulama başlatıldığında veri isteklerinin yinelenen gönderimleri olması ve ardından aynı id'lere sahip ürün çiftlerinin gelmesi ve sonuç olarak tarayıcı konsolunda korkunç kırmızı uyarıların belirmesi durumunda işimize yarayacak.

Bunun nedeni, React 18 ve üzeri sürümlerde, geliştirme modunda (dev) ve React.StrictMode kullanılırken bileşenlerin monte edilme özelliğinde yatmaktadır (production modunda bu sorunun olmadığı söyleniyor). İlk olarak bileşen bağlanır, ardından bağlantısı kesilir ve tekrar bağlanır. Bu nedenle istek iki kez gönderilir.

Muhtemelen siz bu materyali incelerken, React'taki bu çift montaj işlemi bir şekilde değiştirilmiş olacak. Derinlere inmeyeceğiz, bunun yerine bu sorunu aşmamıza yardımcı olacak React kancası useRef'i kullanacağız.

Hadi ürünlerle olan uygulamamızı açalım ve içindeki ProductsList.jsx dosyasını açalım. İçine useRef kancasını içe aktaralım:

import { useEffect, useRef } from 'react'

Ve şimdi useEffect ile olan sonraki kod bloğunu biraz değiştirelim:

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

Başlangıç olarak useRef için yeni bir dataFetch değişkeni tanımlayalım. Başlangıçta onun current özelliğini false olarak ayarlayalım. Uygulama zaten başlatıldıysa ve buna bağlı olarak istek gönderildiyse, current özelliği zaten true olacaktır, bu da fonksiyondan çıkacağımız ve veri isteğinin tekrarlanmayacağı anlamına gelir. Yukarıda bahsedilen kod parçası artık şu şekilde olacak:

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

Şimdi uygulamamızı tekrar başlatalım ve konsoldaki kırmızı uyarıların kaybolmasını rahatlıkla not edelim ve sunucuda planladığımız gibi artık 8 tane, kopyaları olmayan bir ürün listesi görelim. Artık Redux DevTools'ta istek sırasında oluşturulan eylemler tekrarlanmıyor.

Öğrenci uygulamanızı açın ve içindeki StudentsList.jsx dosyasını açın. Ders materyallerine göre, eğer varsa, çift istek problemini giderin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet