⊗jsrxPmATCDT 47 of 57 menu

Redux-те компоненттен thunk жіберу

Осы сабақта біз React-компоненті ProductsList-тен өнімдерді алу үшін thunk жібереміз.

Енді өнімдер қолданбамызды ашып, ондағы ProductsList.jsx файлын ашайық. Алдымен біз жасаған fetchProducts thunk-ін импорттауға қосамыз:

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

Сондай-ақ бізге action creator-ді жіберу үшін useDispatch хукі қажет болады және useEffect хукі қажет, себебі мұнда бізде қосымша әсер бар, себебі біз желімен жұмыс істеп жатырмыз, бұл сыртқы API:

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

Енді ProductsList функциясының кодында бірінші жолға, products жариялауының алдына мынаны қосамыз:

const dispatch = useDispatch()

Әрі қарай стейттен өнімдерді алу кезінде біз сұрау статусын да шығарамыз:

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

Дәл осыдан кейін useEffect хукі арқылы React-ке компонент рендерленгеннен кейін өнімдерді алу керек екенін айтамыз. Мұнда бізге сұрау статусы қажет, себебі біз үшін мұндай сұрау тек бір рет жіберілуі маңызды:

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

Қазір біз қолданбамызды іске қоса аламыз, онда сол жақтағы мәзірдегі 'Products' батырмасын басамыз. Біз әлі де өнімдер тізімін көрмейміз, бірақ егер біз Redux DevTools-қа кірсек, онда терезешіңің сол жағында мен өткен сабақта айтқанымдай автоматты түрде жасалған экшендер products/fetchProducts/pending және fulfilled пайда болады. Енді products/fetchProducts/fulfilled action-ін басып, оның payload өрісін қарайық - міне біздің өнімдер тізімішіміз! Ура, біздің тізбектегі барлық буындар - сервер, дерекқор, клиент және Redux - қолданба үйлесімді және бірлесіп жұмыс істейді. Айтпақшы, мұнда сіз meta қасиетін де көре аласыз, онда біз сұрау статусын көреміз.

Тағы бір нәрсеге назар аударайық, сізде pending және, демек, fulfilled екі рет көрсетілуі мүмкін. Егер солай болса, үмітіңізді үзмейік, біз бұл турале кейінірек сөйлесеміз.

Студенттер қолданбаңызды ашыңыз. Ондағы StudentsList.jsx файлын ашыңыз. Оған сабақ материалына сәйкес қажетті хукілер мен thunk-ті импорттаңыз.

Сабақ материалын зерттей отырып, studentStatus сұрау статусын алыңыз, содан кейін, useEffect пайдаланып, fetchStudents-ті тек studentStatus мәні 'idle' болған жағдайда ғана жіберіңіз.

Қолданбаңызды іске қосыңыз, қолданбаның сол жақ мәзіріндегі 'Students' батырмасын басыңыз, содан кейін браузерде Redux DevTools кеңейтпесін іске қосыңыз, осы сабақтағыдай сіз pending және fulfilled (және онда студенттермен payload) экшендерін көруіңіз керек. Кеңейтімнің қойындыларын тексеріп көріңіз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČ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
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау