⊗jsrxPmATADR 49 of 57 menu

Pyyntöjen kaksoiskappaleiden poistaminen Reduxissa

Tästä oppitunnista on hyötyä tilanteessa, jossa sovelluksen käynnistyessä tietojen hakupyyntö lähetetään kahdesti, minkä jälkeen tulee pari tuotetta, joilla on samat id:t, ja seurauksena ovat pelottavat punaiset varoitukset selaimen konsolissa.

Tämän syynä on Reactin 18 version ja uudemmien komponenttien liittämisen erityispiirre kehitystilassa (dev), kun käytetään React.StrictMode:ta (kerrotaan, että tuotantotilassa (production) kaikki on kunnossa tämän suhteen). Ensin komponentti liitetään, sitten irrotetaan ja liitetään uudelleen. Siksi pyyntö lähetetään kahdesti.

On mahdollista, että opiskellessasi tätä materiaalia, tämä kaksoisliittäminen Reactissa on jo muuttunut jollakin tavalla. Emme syvenny yksityiskohtiin, vaan käytämme yksinkertaisesti Reactin useRef -koukku, jonka avulla voimme kiertää tämän epäselvyyden.

Avataan tuotesovelluksemme, ja siellä tiedosto ProductsList.jsx. Tuodaan siihen useRef -koukku:

import { useEffect, useRef } from 'react'

Ja nyt muokataan hieman seuraavaa koodilohkoa useEffect:lla:

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

Aluksi luomme uuden muuttujan dataFetch useRef:lle. Asetamme sen current-ominaisuuden aluksi arvoon false. Jos sovellus on jo käynnistetty ja pyyntö on vastaavasti lähetetty, current-ominaisuus on jo true, mikä tarkoittaa, että poistumme funktiosta ja tietojen kaksoispyyntöä ei tapahdu. Joten, edellä mainittu koodinpala on nyt tällainen:

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

Käynnistetään nyt sovelluksemme uudelleen ja huomaamme helpotuksella punaisten varoitusten katoamisen konsolista, ja näemme tuoteliston ilman kaksoiskappaleita, nyt niitä on 8, kuten palvelimella suunnittelimme. Nyt Redux DevToolsissa pyyntöön liittyvät toiminnot eivät enää toistu.

Avaa opiskelijasovelluksesi, ja siellä tiedosto StudentsList.jsx. Poista kaksoispyynnön ongelma oppitunnin materiaalin mukaisesti, jos sellainen sinulla on.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää