⊗jsrxPmATCDT 47 of 57 menu

Испраќање на thunk од компонента во Redux

На овој урок ќе испратиме thunk за добивање на производи од React-компонентата ProductsList.

Ајде сега да ја отвориме нашата апликација со производи, а во неа датотеката ProductsList.jsx. За почеток да го додадеме на импортот thunk-от fetchProducts, кој го создадовме:

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

Исто така ќе ни треба hook-от useDispatch за испраќање на нашиот креатор на акции и hook-от useEffect бидејќи овде имаме спореден ефект, бидејќи имаме работа со мрежа, а тоа е веќе надворешно API:

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

Сега првата линија во кодот на функцијата ProductsList пред декларацијата products да додадеме:

const dispatch = useDispatch()

Понатаму при добивањето на производи од state-от ние уште ќе го извлечеме и статусот на барањето:

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

И веднаш по ова ќе му кажеме на React со помош на hook-от useEffect, дека по исцртувањето на компонентата неопходно е да ги добиеме производите. Овде ни е потребен и статусот на барањето, бидејќи важно е за нас такво барање да се испрати само еднаш:

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

Сега можеме да ја стартуваме нашата апликација, да кликнеме во неја на 'Products' во менито лево. Списокот на производи сеуште нема да го видиме, но ако влеземе во нашите Redux DevTools, тогаш во левиот дел на прозорецот ќе се појават автоматски генерираните (како што реков во претходниот урок) акции products/fetchProducts/pending и fulfilled. Сега ајде да кликнеме на action-от products/fetchProducts/fulfilled и на неговото поле payload - еве го нашиот список на производи! Ура, сите наши врски во синџирот - сервер, база, клиент и Redux - апликацијата работат усогласено и заедно. Патем, како што гледате овде има и својство meta, во кое го гледаме статусот на барањето.

Да обрнеме внимание на уште една работа, кај вас може да се случи pending и, соодветно, fulfilled да се прикажуваат по два пати. Ако е така, тогаш не грижете се, за ова ќе зборуваме подоцна.

Отворете ја вашата апликација со студенти. Отворете во неа датотеката StudentsList.jsx. Импортирујте во неа потребните hooks и thunk според материјалот од урокот.

Проучувајќи го материјалот од урокот, добијте го статусот на барањето studentStatus, а потоа, користејќи useEffect, испратете fetchStudents само доколку вредноста studentStatus е 'idle'.

Стартувајте ја вашата апликација, кликнете во менито на апликацијата лево на 'Students', а потоа стартувајте го во прелистувачот додатокот Redux DevTools, како и во овој урок треба да ги видите акциите со pending и fulfilled (а во него payload со студенти). Разгледајте ги јазичињата на додатокот.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј