⊗jsrxPmATCDT 47 of 57 menu

Odoslanie thunku z komponentu v Reduxe

Na tejto lekcii odošleme thunk na získanie produktov z React komponentu ProductsList.

Teraz otvorme našu aplikáciu s produktmi a v nej súbor ProductsList.jsx. Na začiatok pridajme k importu thunk fetchProducts, ktorý sme vytvorili:

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

Tiež budeme potrebovať hook useDispatch na odoslanie nášho action creator a hook useEffect pretože tu máme vedľajší efekt, keďže pracujeme so sieťou, a to je už externé API:

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

Teraz prvým riadkom v kóde funkcie ProductsList pred deklaráciou products pridajme:

const dispatch = useDispatch()

Ďalej pri získavaní produktov zo stavu budeme extrahovať aj stav požiadavky:

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

A hneď na to povedzme React pomocou hooku useEffect, že po vykreslení komponentu potrebujeme získať produkty. Tu sa nám bude hodiť stav požiadavky, pretože je dôležité, aby sa takáto požiadavka odoslala iba raz:

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

Teraz môžeme spustiť našu aplikáciu, kliknúť v nej na 'Products' v menu vľavo. Zoznam produktov zatiaľ neuvidíme, ale ak prejdeme do nášho Redux DevTools, tak v ľavej časti okienka sa nám objavia automaticky vygenerované (ako som povedal v minulej lekcii) akcie products/fetchProducts/pending a fulfilled. Teraz kliknime na action products/fetchProducts/fulfilled a na jeho pole payload - tu je náš zoznam produktov! Hurá, všetky naše články v reťazci - server, databáza, klient a Redux - aplikácia fungujú súhlasne a spoločne. Mimochodom, ako vidíte tu je ešte vlastnosť meta, v ktorej vidíme stav požiadavky.

Všimnime si ešte jednu vec, môže sa vám stať, že pending a, preto fulfilled sa budú zobrazovať dva krát. Ak je to tak, tak sa nehnevajte, porozprávame sa o tom neskôr.

Otvorte vašu aplikáciu so študentmi. Otvorte v nej súbor StudentsList.jsx. Importujte do neho potrebné hooky a thunk podľa materiálu z lekcie.

Naštudovaním materiálov z lekcie získajte stav požiadavky studentStatus, a potom, použitím useEffect, odošlite fetchStudents iba za podmienky, že hodnota studentStatus je 'idle'.

Spustite vašu aplikáciu, kliknite v menu aplikácie vľavo na 'Students', a potom spustite v prehliadači rozšírenie Redux DevTools, ako aj v tejto lekcii by ste mali vidieť akcie s pending a fulfilled (a v ňom payload so študentmi). Prezrite si záložky rozšírenia.

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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť