⊗jsrxPmATCDT 47 of 57 menu

Slanje thunk-a iz komponente u Redux

Na ovoj lekciji ćemo poslati thunk za dobijanje proizvoda iz React komponente ProductsList.

Hajde sada da otvorimo našu aplikaciju sa proizvodima, a u njoj fajl ProductsList.jsx. Za početak da dodamo u import thunk fetchProducts, koji smo kreirali:

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

Takođe će nam trebati hook useDispatch za slanje našeg action creator-a i hook useEffect jer ovde imamo nuspojavu (side effect), pošto imamo posla sa mrežom, a to je već eksterni API:

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

Sada prvu liniju u kodu funkcije ProductsList pre deklaracije products da dodamo:

const dispatch = useDispatch()

Zatim prilikom dobijanja proizvoda iz stanja izvlačićemo i status zahteva:

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

I odmah nakon toga reći React-u pomoću hook-a useEffect, da nam nakon renderovanja komponente treba da dobijemo proizvode. Ovde nam je potreban status zahteva, jer nam je važno da se takav zahtev šalje samo jednom:

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

Sada možemo da pokrenemo našu aplikaciju, kliknemo u njoj na 'Products' u meniju levo. Listu proizvoda još nećemo videti, ali ako udjemo u naš Redux DevTools, onda u levoj partiji prozorčića pojaviće se automatski generisani (kao što sam rekao na prošloj lekciji) akcije products/fetchProducts/pending i fulfilled. Sada hajde da kliknemo na akciju products/fetchProducts/fulfilled i na njeno polje payload - evo i našeg spiska proizvoda! Ura, svi naši lanci - server, baza, klijent i Redux - aplikacija rade usaglašeno i zajedno. Uzgred, kao što vidite ovde još postoji svojstvo meta, u kojem vidimo status zahteva.

Obratimo pažnju na još jednu stvar, kod vas može da se desi da se pending i, posledično, fulfilled budu prikazani dva puta. Ako je tako, onda ne brinite, o tome ćemo da pričamo kasnije.

Otvorite vašu aplikaciju sa studentima. Otvorite u njoj fajl StudentsList.jsx. Importujte u njega potrebne hook-ove i thunk u skladu sa materijalom iz lekcije.

Nakon što ste proučili materijal lekcije, dobijte status zahteva studentStatus, a zatim, koristeći useEffect, pošaljite fetchStudents samo pod uslovom da je vrednost studentStatus - 'idle'.

Pokrenite vašu aplikaciju, kliknite u meniju aplikacije levo na 'Students', a zatim pokrenite u browser-u ekstenziju Redux DevTools, kao i na ovoj lekciji trebalo bi da vidite akcije sa pending i fulfilled (a u njemu payload sa studentima). Prošetajte po karticama ekstenzije.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij