⊗jsrxPmSDSSC 35 of 57 menu

Redux-ում state-ի կառուցվածքի փոփոխում

Առաջին փուլը, որը մենք կիրականացնենք մեր Redux հավելվածի արտաքին սերվերի հետ փոխազդեցության համար, դա նրա վրա պահվող տվյալների ստացումն է հավելվածի գործարկման ժամանակ։ Սակայն նախ եկեք մեր հավելվածում մի քանի փոփոխություններ կատարենք։

Բացենք մեր ապրանքների հավելվածը, և դրա մեջ productsSlice.js ֆայլը։ Ուշադրություն դարձրեք initialState-ի սահմանմանը։ Սկզբում մեր ապրանքների սլայսը productsSlice-ը զանգված է, որի մեջ կան օբյեկտներ (մեր դեպքում դրանք երկուսն են) ապրանքների տվյալներով։ Առաջին հերթին, քանի որ այժմ մենք դրանք կբեռնենք սերվերից, ապա պետք է հեռացնել դրանք initialState-ից։ Երկրորդ հերթին, մենք կուղարկենք սերվեր API հարցումներ և մեզ կարևոր կլինի իմանալ դրանց կարգավիճակի մասին։ Հաշվի առնելով այս երկու բաները, եկեք վերափոխենք initialState-ը։ Թող այժմ դա լինի պարզապես օբյեկտ products դաշտով (սկզբում այստեղ ոչ մի տվյալ չի լինի, այլ պարզապես դատարկ զանգված), status-ով և error-ով։ Այժմ մեր կոդը initialState-ի համար կդառնա մի փոքր ավելի կարճ.

const initialState = { products: [], status: 'idle', error: null, }

Մինչև հիմա մենք սահմանել ենք կարգավիճակը 'idle' (անգործություն), քանի որ սկզբնապես մենք ոչ մի հարցում չենք ուղարկում, իսկ ընդհանրապես այն կփոխվի և կարող է ընդունել արժեքներ 'բեռնում', 'կատարված', 'բեռնման սխալ'։ Հիշեք, որ կարգավիճակը նշանակելու համար դուք կարող եք ընտրել այն անունները, որոնք ձեզ հարմար կլինեն։

Իջնենք ավելի ցած կոդով։ initialState-ի փոփոխությունից հետո, մենք պետք է փոխենք նաև այն կոդը, որտեղ մենք աշխատում ենք այս state-ի հետ ռեդյուսեր-ֆունկցիաներում։ Նայենք productAdded-ի կոդին.

state.push(action.payload)

Այժմ նոր ապրանքները մենք կդնենք ոչ թե պարզապես state-ի ապրանքների մեջ, այլ նրա հատկության state.products-ի մեջ։ Ուստի, փոխարինենք վերը նշված տողը հետևյալով.

state.products.push(action.payload)

Համապատասխանաբար, կկատարենք նույն փոփոխությունները reactionClicked ռեդյուսերի համար։ Փոխարենը.

const currentProduct = state.find((product) => product.id === productId)

Այժմ կլինի.

const currentProduct = state.products.find((product) => product.id === productId)

Ինքնուրույն փոխարինեք statestate.products-ով նաև productUpdated ռեդյուսերի կոդում։

Բացեք ձեր ուսանողների հավելվածը։ Բացեք դրա մեջ studentsSlice.js ֆայլը։ Թող այժմ ձեր initialState-ն ունենա երեք հատկություն. students, status, error - վերափոխեք այն, ինչպես ցուցադրված է դասում։

Կատարեք համապատասխան փոփոխություններ նաև կոդում ավելի ցած։ Փոխարինեք statestate.students-ով ձեր երեք ռեդյուսեր-ֆունկցիաների կոդում։

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել