⊗jsrxPmRDARR 32 of 57 menu

Reducera pievienošana Redux lietotnei

Iepriekšējā nodarbībā mēs izveidojām komponentu UserReaction, lai katram produktam būtu arī lietotāju reakcijas. Tagad mums ir jāuzraksta reducers, kas apstrādās reakciju skaitītāju kad lietotājs noklikšķina uz vienas vai otras reakcijas pogas.

Atvērsim mūsu produktu lietotni, un tajā failu productsSlice.js ar visiem reduceriem. Tagad īpašumā reducers izveidosim vēl vienu reduceri reactionClicked (varam to ievietot pirmo - pirms productAdded, lai gan tam nav nozīmes). Kā parasti, nodosim tai parametrus state un action:

reactionClicked(state, action) {},

Un tagad figūriekavu iekšienē, kuras mēs atstājām tukšas iepriekšējā solī, uzrakstīsim tam kodu. Pirmkārt mēs izvilksim produkta id no payload objekta action un reakcijas nosaukumu:

const { productId, reaction } = action.payload

Pēc tam no padotā state iegūsim vajadzīgo produktu:

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

Un ja tāds produkts ir, tad palielināsim padotās reakcijas vērtību par 1:

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

Lūk arī viss, mūsu kods reactionClicked ir gatavs:

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

Beigās failā pievienosim eksportu iegūtajam action creator:

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

Šeit jāatzīmē divi svarīgi punkti. Kā jūs atceraties no iepriekšējām nodarbībām - atjaunināt šādi tieši vērtību reducera kodā nav atļauts (paskatieties uz šo rindu: reactions[reaction]++), bet mums tas tiks piedots, jo mēs to darām createSlice iekšienē, kas izmanto Immer bibliotēku. Tā parūpēsies, lai pārveidotu mūsu kodu par "drošu" vērtības atjaunināšanu. Tas ļauj mums rakstīt sarežģītas lietas vienkāršākā veidā.

Nākamais, kas jāatceras - objekts action jāsatur minimāli iespējamo informācijas daudzumu - tikai tik, lai norādītu, kas noticis. Tajā nevajadzētu veikt nekādus aprēķinus. Visus aprēķinus state atjaunināšanai vajadzētu veikt reducerī, šeit var uzrakstīt tik daudz loģikas, cik nepieciešams.

Atveriet savu studentu lietotni un failā studentsSlice.js pievienojiet vēl vienu reduceri voteClicked laukā reducers, kā parādīts nodarbībā. Uzrakstiet kodu tam. Jūsu reducera uzdevums - noklikšķinot palielināt vērtību vote (vai balss), uz kuras noklikšķināja, attiecīgajam studentam, par 1.

Faila beigās neaizmirstiet eksportēt iegūto action creator voteClicked.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt