⊗jsrxPmATCDT 47 of 57 menu

Sending av thunk fra en komponent i Redux

I denne leksjonen skal vi sende en thunk for å hente produkter fra React-komponenten ProductsList.

La oss nå åpne applikasjonen vår med produkter, og i den filen ProductsList.jsx. Først, la oss legge til import av thunk-en fetchProducts som vi opprettet:

import { selectAllProducts, fetchProducts } from './productsSlice'

Vi trenger også hook-en useDispatch for å sende vår action creator og hook-en useEffect fordi vi her har en bivirkning, siden vi har med et nettverk å gjøre, og det er allerede et eksternt API:

import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux'

Nå, som første linje i koden til funksjonen ProductsList før deklarasjonen av products, legger vi til:

const dispatch = useDispatch()

Deretter, når vi henter produkter fra staten, vil vi også trekke ut statusen for forespørselen:

const products = useSelector(selectAllProducts) const productStatus = useSelector((state) => state.products.status)

Og umiddelbart etter dette forteller vi React ved hjelp av hook-en useEffect, at vi etter at komponenten er rendret, trenger å hente produktene. Her trenger vi statusen for forespørselen, fordi det er viktig for oss at en slik forespørsel sendes bare én gang:

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

Nå kan vi starte applikasjonen vår, klikke på 'Products' i menyen til venstre. Vi vil ikke se produktlisten ennå, men hvis vi går inn i Redux DevTools våre, vil vi i den venstre delen av vinduet se de automatisk genererte ( som jeg sa i forrige leksjon) handlingene products/fetchProducts/pending og fulfilled. La oss nå klikke på action-en products/fetchProducts/fulfilled og på feltet payload - her er produktlisten vår! Hurra, alle våre ledd i kjeden - server, database, klient og Redux - applikasjonen jobber samordnet og sammen. Forresten, som du ser her er det også en egenskap meta, der vi ser statusen for forespørselen.

La oss legge merke til en ting til, det kan hende at pending og, følgelig, fulfilled vil vises to ganger. Hvis det er slik, så ikke vær bekymret, vi skal snakke om dette senere.

Åpne applikasjonen din med studenter. Åpne filen StudentsList.jsx i den. Importer de nødvendige hook-ene og thunk-en i henhold til materialet fra leksjonen.

Etter å ha studert leksjonsmaterialet, hent statusen for forespørselen studentStatus, og deretter, ved å bruke useEffect, send fetchStudents bare på betingelse av at verdien studentStatus er 'idle'.

Start applikasjonen din, klikk på 'Students' i applikasjonsmenyen til venstre, og start deretter Redux DevTools-utvidelsen i nettleseren. Som i denne leksjonen skal du se handlinger med pending og fulfilled (og i den payload med studentene). Utforsk fanene i utvidelsen.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis