⊗jsrxPmATCDT 47 of 57 menu

Thunk küldése komponensből a Reduxba

Ezen a leckén egy thunk-ot küldünk a termékek lekéréséhez a React-komponensből ProductsList.

Most nyissuk meg a termékalkalmazásunkat, és benne a ProductsList.jsx fájlt. Először is adjuk hozzá az importálandó thunk-ot fetchProducts, amit létrehoztunk:

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

Szükségünk lesz a useDispatch hook-ra is a mi action creator-ünk elküldéséhez és a useEffect hook-ra, mert itt mellékhatás van, mivel hálózattal dolgozunk, ami már egy külső API:

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

Most a függvény kódjának első sorában a ProductsList függvényben, a products deklarálása előtt adjuk hozzá:

const dispatch = useDispatch()

Ezután, amikor a termékeket lekérjük az állapotból, ki fogjuk nyerni a kérés állapotát is:

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

És rögtön ezután megmondjuk a Reactnak a useEffect hook segítségével, hogy a komponens renderelése után le kell kérnünk a termékeket. Itt lesz szükségünk a kérés állapotára, hiszen fontos, hogy egy ilyen kérés csak egyszer kerüljön kiküldésre:

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

Most elindíthatjuk az alkalmazásunkat, rákattintva a bal oldali menüben a 'Products' elemre. A terméklistát egyelőre nem fogjuk látni, de ha belépünk a Redux DevTools-ba, akkor a bal oldali ablakrészben megjelennek az automatikusan generált (ahogyan azt az előző leckében mondtam) akciók products/fetchProducts/pending és fulfilled. Most kattintsunk az products/fetchProducts/fulfilled akcióra és annak payload mezőjére - itt van a mi terméklistánk! Húha, minden láncszemünk - a szerver, az adatbázis, a kliens és a Redux - alkalmazás összhangban és együttműködve dolgozik. Egyébint, amint látjatok itt van még egy meta tulajdonság is, amiben a kérés állapotát látjuk.

Figyeljünk még egy dologra, előfordulhat, hogy a pending és, következésképpen a fulfilled két alkalommal jelenik meg. Ha ez történik, akkor ne csüggedj, erről később beszélünk.

Nyisd meg a diák alkalmazásodat. Nyisd meg benne a StudentsList.jsx fájlt. Importáld bele a szükséges hook-okat és thunk-ot a lecke anyaga szerint.

A lecke anyagának tanulmányozása után kérdezd le a kérés állapotát studentStatus, majd a useEffect használatával küldd el a fetchStudents thunk-ot csak akkor, ha a studentStatus értéke 'idle'.

Indítsd el az alkalmazásodat, kattints a bal oldali menüben a 'Students' elemre, majd indítsd el a böngészőben a Redux DevTools kiegészítőt, ahogyan ebben a leckében is látnod kell a pending és fulfilled akciókat (és benne a payload-t a diákokkal). Böngéssz a kiegészítő lapjai között.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás