⊗jsrxPmATADR 49 of 57 menu

Елиминирање на дуплирање на барања во Redux

Оваа лекција ќе ни биде корисна во случај кога при стартување на апликацијата имаме дуплирано испраќање на барање за податоци, а потоа доаѓаат парови на производи со исти id, и, како последица се појавуваат страшни црвени предупредувања во конзолата на прелистувачот.

Причината за ова лежи во карактеристиката на монтирање на компонентите во React 18 верзија и повисока во режим на развој (dev), при користење на React.StrictMode (велат, во production режим сè е во ред со ова). Прво компонентата се поврзува, потоа се исклучува и повторно се поврзува. Затоа и барањето се испраќа двапати.

Можно е, кога ќе го изучувате овој материјал, ова двојно монтирање во React веќе да е променето на некој начин. Ние нема да навлегуваме во детали, туку едноставно ќе користиме React hook useRef, кој ќе ни помогне да го заобидеме ова недоразбирање.

Ајде да ја отвориме нашата апликација со производи, а во неа датотеката ProductsList.jsx. Да го импортираме во неа hook-от useRef:

import { useEffect, useRef } from 'react'

А сега малку да го смениме следниот блок на код со useEffect:

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

За почеток да воведеме нова променлива dataFetch за useRef. Иницијално да го поставиме нејзиниот property current на false. Доколку апликацијата веќе е стартувана и, соодветно, барањето е испратено, тогаш property-то current веќе ќе биде true, што значи дека ние едноставно ќе излеземе од функцијата и повторното барање на податоци нема да се случи. Значи, горенаведениот дел од кодот сега ќе изгледа вака:

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

Сега повторно да ја стартуваме нашата апликација и со олеснување да забележиме исчезнување на црвените предупредувања во конзолата, и да го видиме листата на производи без дупликати, сега ги има 8, како што планиравме на серверот. Сега во Redux DevTools action-ите, генерирани при барање, повеќе не се повторуваат.

Отворете ја вашата апликација со студенти, а во неа датотеката StudentsList.jsx. Елиминирајте го проблемот со двојно барање, согласно материјалите од лекцијата, доколку таков го имате.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј