⊗jsrxPmATADR 49 of 57 menu

Reduxda so'rov takrorlanishini bartaraf etish

Ushbu dars bizga quyidagi holatda foydali bo'ladi, agar ilovani ishga tushirganda ma'lumotlar so'rovi ikki marta yuborilsa va keyin bir xil id ga ega bo'lgan mahsulot juftlari kelib tushsa va natijada brauzer konsolida qizil ogohlantirishlar paydo bo'lsa.

Buning sababi React 18 va undan yuqori versiyalarda komponentlarni o'rnatishning xususiyatida yotadi, ishlab chiqish rejimida (dev), React.StrictMode ishlatilganda (isHLab chiqarish rejimida hammasi yaxshi ekanligi aytiladi). Avval komponent ulanadi, keyin ulanadi va yana ulanadi. Shuning uchun so'rov ikki marta yuboriladi.

Ehtimol, siz ushbu materialni o'rganayotganingizda, React dagi bu qo'shma o'rnatish allaqachon qandaydir tarzda o'zgartirilgan bo'ladi. Biz chuqurlarga sho'ng'imasdan, shunchaki hozircha React ning useRef hookidan foydalanamiz, bu bizga ushbu notanishlikni engishda yordam beradi.

Keling, mahsulotlar bilan ilovamizni ochaylik, va unda ProductsList.jsx faylini. Unga useRef hookini import qilamiz:

import { useEffect, useRef } from 'react'

Va endi useEffect bilan keyingi kod blokini biroz o'zgartiramiz:

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

Boshlash uchun useRef uchun yangi dataFetch o'zgaruvchisini kiritamiz. Dastlab uning current xususiyatini false ga o'rnatamiz. Agar ilova allaqachon ishga tushirilgan bo'lsa va, mos ravishda, so'rov yuborilgan bo'lsa, current xususiyati allaqachon true bo'ladi, demak biz shunchaki funksiyadan chiqamiz va ma'lumotlarning takroriy so'rovi bo'lmaydi. Shunday qilib, yuqorida tilga olingan kod parchasi endi quyidagicha bo'ladi:

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

Endi ilovamizni qayta ishga tushiramiz va konsoldagi qizil ogohlantirishlar yo'qolganidan xursand bo'lamiz, va dublikatsiz mahsulotlar ro'yxatini ko'ramiz, endi ular 8 ta, serverda rejalashtirganimizdek. Endi Redux DevTools da so'rov paytida yaratiladigan actionlar, endi takrorlanmaydi.

Talabalar bilan ilovingizni oching, va unda StudentsList.jsx faylini. Agar sizda shunday muammo bo'lsa, dars materiallariga muvofiq, qo'shma so'rov muammosini bartaraf eting.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish