⊗jsrxPmRDARR 32 of 57 menu

Redux колдонмосуна редьюсер кошуу

Өткөн сабакта биз ар бир продукт үчүн колдонуучу реакциялары болушу үчүн UserReaction компонентин түзгөнбүз. Эми биз редьюсер жазышыбыз керек, ал колдонуучу каалаган реакциянын баскычына чыкылдатканда реакциялар эсептегичин иштетет.

Келгиле, биздин продукттар колдонмобузду ачып, анын ичиндеги бардык редьюсерлер бар productsSlice.js файлын ачалы. Азыр reducers касибинде дагы бир редьюсер reactionClicked түзөбүз (аны биринчи - productAddedдан мурун коё алабыз, бирок бул маанилүү эмес). Кадылдай эле, ага параметрлер катары state жана action беребиз:

reactionClicked(state, action) {},

Эми биз мурунку кадамда бош калтырган айры ичине, анын үчүн код жазабыз. Биринчиден, биз продукттун id-син action объектисинин payloadинен жана реакциянын атын алабыз:

const { productId, reaction } = action.payload

Андан кийин берилген стейттен керектүү продуктту алабыз:

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

Эгер мындай продукт бар болсо, анда берилген реакциянын маанисин 1ге көбөйтөбүз:

if (currentProduct) { currentProduct.reactions[reaction]++ }

Ошентип, биздин reactionClicked үчүн код даяр:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

Келгиле, файлдын аягында алынган action creator-ди экспорттойбуз:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

Бул жерде эки маанилүү учурду белгилеш керек. Силер мурунку сабактардан эсиңерде болсо - редьюсердин кодунун ичинде түздөн-түз маанини ошентип жаңыртууга болбойт (мына ушул сапка көз салгыла: reactions[reaction]++), бирок бизге бул кечирим катары каралат, анткени биз муну createSlice ичинде жасап жатабыз, ал Immer китепканасын колдонот. Ал биздин кодду "коопсуз" жаңыртууга айландырууну өзү камсыз кылат. Бул бизге татаал нерселерди жөнөкөйрөк жол менен жазууга мүмкүндүк берет.

Кийинки эске алууга тийиш нерсе - action объектиси минималдуу мүмкүн болгон маалыматты гана камтышы керек - эмне болгонун көрсөтүү үчүн гана. Анын ичинде эч кандай эсептөөлөрдү жасабоо керек. Стейтти жаңыртуу үчүн бардык эсептөөлөр редьюсердин ичинде жасалышы керек, бул жерде муну үчүн керектүү болгон канчалык логика жаза аласыз.

Өзүңүздүн студенттер колдонмосуңузду ачып, studentsSlice.js файлында сабакта көрсөтүлгөндөй reducers талаасына дагы бир редьюсер voteClicked кошуңуз. Анын үчүн код жазыңыз. Сиздин редьюсериңиздин милдети - чыкылдатканда, берилген студент үчүн чыкылдатылган vote (же добуш) маанисин 1ге көбөйтүү.

Файлдын аягында алынган action creator voteClicked экспорттоону унутпаңыз.

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу