⊗jsrxPmATCDT 47 of 57 menu

Komponentdən Redux-a thunk göndərilməsi

Bu dərsdə biz React-komponenti ProductsList-dən məhsulları əldə etmək üçün thunk göndərəcəyik.

İndi gəlin məhsul tətbiqimizi açaq və onun içində ProductsList.jsx faylını açaq. Əvvəlcə yaratdığımız fetchProducts thunk-ini import-a əlavə edək:

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

Həmçinin bizə action creator-ımızı göndərmək üçün useDispatch hook-a və useEffect hook-a ehtiyacımız olacaq, çünki burada bizim yan effektimiz var, çünki biz şəbəkə ilə işləyirik və bu artıq xarici API-dir:

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

İndi ProductsList funksiyasının kodunda products təyinindən əvvəl birinci sətir kimi əlavə edək:

const dispatch = useDispatch()

Sonra, state-dən məhsulları əldə edərkən biz sorğunun statusunu da çıxaracağıq:

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

Və dərhal bundan sonra useEffect hook-u vasitəsilə React-a deyək ki, komponent render olunduqdan sonra məhsulları əldə etməliyik. Burada bizə sorğunun statusu lazımdır, çünki bizim üçün vacibdir ki, belə bir sorğu yalnız bir dəfə göndərilsin:

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

İndi biz tətbiqimizi işə sala bilərik, onun sol menyusunda 'Products'-a klikləyə bilərik. Biz hələlik məhsul siyahısını görməyəcəyik, amma əgər biz Redux DevTools-a getsək, sol pəncərəcikdə avtomatik yaradılmış (keçən dərsdə dediyim kimi) action-lar products/fetchProducts/pendingfulfilled görünəcək. İndi gəlin products/fetchProducts/fulfilled action-una və onun payload sahəsinə klik edək - budur bizim məhsul siyahımız! Ura, zəncirimizdəki bütün halqalar - server, verilənlər bazası, klient və Redux - tətbiqi uyğun və birgə işləyir. Yeri gəlmişkən, görürsüz burada meta xüsusiyyəti də var, onda biz sorğunun statusunu görürük.

Başqa bir şeyə də diqqət edək, sizdə ola bilər ki, pending və nəticədə fulfilled iki dəfə göstərilsin. Əgər belədirsə, kədərlənməyin, biz bu barədə sonra danışacağıq.

Tələbə tətbiqinizi açın. Onda StudentsList.jsx faylını açın. Ona dərs materialına uyğun olaraq lazımi hook-ları və thunk-i import edin.

Dərs materiallarını öyrənərək, studentStatus sorğu statusunu əldə edin, sonra isə useEffect istifadə edərək, fetchStudents-i yalnız studentStatus dəyəri 'idle' olduqda göndərin.

Tətbiqinizi işə salın, sol menyuda 'Students'-a klikləyin, sonra brauzerdə Redux DevTools genişlənməsini işə salın, bu dərsdə olduğu kimi siz pendingfulfilled (və onun içində tələbələr olan payload) olan action-ları görməlisiniz. Genişlənmənin vərəqləri arasında gəzinin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et