⊗jsrxPmATADR 49 of 57 menu

Duplisering van versoek in Redux uitskakel

Hierdie les sal vir ons nuttig wees in die geval waar die stuur van 'n dataversoek dupliseer wanneer ons die applikasie begin, en dan kom daar paar produkte met dieselfde id aan, en gevolglik verskyn daar vreeslike rooi waarskuwings in die blaaier se konsole.

Die rede hiervoor lê in die eienskap van die montering van komponente in React 18 weergawe en hoër in ontwikkelingsmodus (dev), wanneer React.StrictMode gebruik word (hulle sê, in produksiemodus is alles ok hiermee). Eers word die komponent gekoppel, dan ontkoppel en weer gekoppel. Daarom word die versoek twee keer gestuur.

Miskien, wanneer jy hierdie materiaal bestudeer, sal hierdie dubbele montering in React al op een of ander manier verander wees. Ons sal nie in die dieptes afdaal nie, maar eenvoudig vir nou van die React hook useRef gebruik maak, wat ons sal help om hierdie misverstand te oorkom.

Kom ons maak ons applikasie met produkte oop, en daarin die lêer ProductsList.jsx. Laat ons die hook useRef daarin invoer:

import { useEffect, useRef } from 'react'

En laat ons nou die volgende blok kode met useEffect effens verander:

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

Om mee te begin, laat ons 'n nuwe veranderlike dataFetch vir useRef invoer. Stel aanvanklik sy eienskap current in na false. As die applikasie reeds begin het en, gevolglik, die versoek was gestuur, dan sal die eienskap current reeds true wees, wat beteken ons verlaat eenvoudig die funksie en 'n herhaalde dataversoek sal nie plaasvind nie. So, die bogenoemde stukkie kode sal nou só lyk:

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

Laat ons nou weer ons applikasie begin en met verligting die verdwyning van rooi waarskuwings in die konsole waarneem, en sien die lys produkte sonder duplikate, nou is daar 8, soos ons op die bediener beplan het. Nou in Redux DevTools is die aksies, gegenereer by versoek, nie meer herhaal nie.

Maak jou applikasie met studente oop, en daarin die lêer StudentsList.jsx. Skakel die probleem met die dubbele versoek uit, volgens die lesmateriaal, as jy een het.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp