⊗jsrxPmATCDT 47 of 57 menu

Thunk nosūtīšana no komponenta uz Redux

Šajā nodarbībā mēs nosūtīsim thunk, lai iegūtu produktus no React komponenta ProductsList.

Tagad atveram mūsu produktu lietotni, un tajā failu ProductsList.jsx. Sākumā pievienojam importētajam thunk fetchProducts, ko mēs izveidojām:

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

Mums arī būs nepieciešams hooks useDispatch lai nosūtītu mūsu action creator un hooks useEffect, jo šeit mums ir blakus efekts, jo mums ir darīšana ar tīklu, un tas jau ir ārēja API:

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

Tagad pirmo rindiņu funkcijas ProductsList kodā pirms products deklarēšanas pievienosim:

const dispatch = useDispatch()

Tālāk, iegūstot produktus no stāvokļa, mēs arī izvilksim pieprasījuma statusu:

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

Un uzreiz pēc tam pateiksim React ar hooks useEffect palīdzību, ka pēc komponenta zīmēšanas mums ir jāiegūst produkti. Šeit mums noderēs pieprasījuma statuss, jo mums ir svarīgi, lai šāds pieprasījums tiktu nosūtīts tikai vienu reizi:

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

Tagad mēs varam palaist mūsu lietotni, klikšķināt tajā uz 'Products' kreisajā izvēlnē. Produktu sarakstu mēs pagaidām neredzēsim, bet ja mēs ejam uz mūsu Redux DevTools, tad kreisajā daļā logiņā mums parādīsies automātiski ģenerētās (kā jau es teicu pagājušajā nodarbībā) darbības products/fetchProducts/pending un fulfilled. Tagad klikšķināsim uz action products/fetchProducts/fulfilled un uz tā lauka payload - lūk, mūsu mazais produktu sarakstiņš! Urā, visi mūsu posmi ķēdē - serveris, datubāze, klients un Redux - lietotne strādā saskaņoti un kopā. Starp citu, kā redzat šeit ir arī īpašība meta, kurā mēs redzam pieprasījuma statusu.

Pievērsīsim uzmanību vēl vienai lietai, jums var gadīties tā, ka pending un, secīgi, fulfilled tiks parādīti divas reizes. Ja tā ir, tad neesiet noraizējušies, mēs par to runāsim vēlāk.

Atveriet savu studentu lietotni. Atveriet tajā failu StudentsList.jsx. Importējiet tajā nepieciešamos hookus un thunk saskaņā ar materiālu no nodarbības.

Izpētījuši nodarbības materiālus, iegūstiet pieprasījuma statusu studentStatus, un pēc tam, izmantojot useEffect, nosūtiet fetchStudents tikai ar nosacījumu, ka studentStatus vērtība - 'idle'.

Palaidiet savu lietotni, klikšķiniet lietotnes izvēlnē pa kreisi uz 'Students', un pēc tam palaidiet pārlūkā paplašinājumu Redux DevTools, kā arī šajā nodarbībā jums vajadzētu redzēt darbības ar pending un fulfilled (un tajā payload ar studentiem). Pameklējiet pa paplašinājuma cilnēm.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt