⊗jsrxPmATCDT 47 of 57 menu

Ирсоли thunk аз компонент ба Redux

Дар ин дарс мо thunk-ро барои гирифтани маҳсулот аз компоненти React-ӣ ProductsList мефиристем.

Биёед акнун барномаи худро бо маҳсулот кушода, ва дар он файли ProductsList.jsx-ро кушоем. Аввалан ба воридоти thunk-и fetchProducts, ки мо сохтем, илова кунем:

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

Инчунин ба мо ҳуки useDispatch барои фиристодани action creator-и мо ва ҳуки 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)

Ва ҳамин пас аз ин ба React бо ёрии ҳуки useEffect мегӯем, ки ба мо пас аз тасвири компонент гирифтани маҳсулот лозим аст. Дар ин ҷо ҳолати дархост ба мо лозим аст, зеро барои мо муҳим аст, ки чунин дархост танҳо як бор фиристода шавад:

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

Акнун мо метавонем барномаи худро оғоз кунем, дар он рӯй 'Products'-ро дар менюи чап клик кунем. Рӯйхати маҳсулотро мо ҳоло намебинем, аммо агар мо ба Redux DevTools-и худ дароем, пас дар қисми чапи даричаи мо экшенҳои тавлидшудаи автоматӣ (ҳамон тавре ки ман дар дарси гузашта гуфтам) products/fetchProducts/pending ва fulfilled пайдо мешаванд. Акнун биёед ба экшени products/fetchProducts/fulfilled ва майдони он 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 истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан