⊗jsrxPmATCDT 47 of 57 menu

Pošiljanje thunk iz komponente v Redux

V tej lekciji bomo poslali thunk za pridobitev izdelkov iz React komponente ProductsList.

Odprimo zdaj našo aplikacijo z izdelki in v njej datoteko ProductsList.jsx. Za začetek dodajmo k uvozu thunk fetchProducts, ki smo ga ustvarili:

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

Prav tako bomo potrebovali kavelj useDispatch za pošiljanje našega ustvarjalca akcije in kavelj useEffect, ker imamo tukaj stranski učinek, saj imamo opravka z omrežjem, kar je že zunanji API:

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

Zdaj naj dodamo v prvi vrstici kode funkcije ProductsList pred deklaracijo products:

const dispatch = useDispatch()

Nato bomo pri pridobivanju izdelkov iz stanja še izvlekli status zahteve:

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

In takoj za tem povemo Reactu s pomočjo kavlja useEffect, da moramo po izrisu komponente pridobiti izdelke. Tukaj bo prišel prav status zahteve, saj je pomembno, da se taka zahteva pošlje samo enkrat:

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

Trenutno lahko zaženemo našo aplikacijo, kliknemo na 'Products' v meniju na levi. Seznama izdelkov še ne bomo videli, toda če odpremo naše Redux DevTools, se bodo v levem delu okenca pojavila samodejno ustvarjena (dejanja) products/fetchProducts/pending in fulfilled. Zdaj pa kliknimo na action products/fetchProducts/fulfilled in njegovo polje payload - tukaj je naš seznam izdelkov! Hura, vsi naši členi v verigi - strežnik, baza, odjemalec in Redux - aplikacija delujejo usklajeno in skupaj. Mimogrede, kot vidite, je tukaj še lastnost meta, v kateri vidimo status zahteve.

Bodimo pozorni še na eno stvar, pri vas se lahko zgodi, da se bosta pending in, posledično, fulfilled prikazala dvakrat. Če je temu tako, ne bodite potrti, o tem bomo govorili kasneje.

Odprite vašo aplikacijo s študenti. Odprite v njej datoteko StudentsList.jsx. Uvozite vanjo potrebne kavlje in thunk v skladu z gradivom iz lekcije.

Po preučitvi gradiva lekcije pridobite status zahteve studentStatus, nato pa z uporabo useEffect pošljite fetchStudents le pod pogojem, da je vrednost studentStatus - 'idle'.

Zaženite vašo aplikacijo, kliknite v meniju aplikacije na levi na 'Students', nato pa zaženite v brskalniku razširitev Redux DevTools, kot v tej lekciji bi morali videti dejanja z pending in fulfilled (v njem payload s študenti). Raziščite zavihke razširitve.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni