⊗jsrxPmRDARR 32 of 57 menu

Redux rakendusele redutseeri lisamine

Eelmises õppetükis loome komponendi UserReaction selleks, et igal toodel oleks ka kasutajate reaktsioonid. Nüüd peame kirjutama redutseeri, mis töötleb reaktsioonide loendurit kui kasutaja klõpsab nupul selle või teise reaktsiooni jaoks.

Avame oma toodete rakenduse, ja selles faili productsSlice.js koos kõigi redutseeritega. Nüüd omaduses reducers loome veel ühe redutseeri reactionClicked (võime panna selle esimeseks - enne productAdded, kuigi sel pole vahet). Nagu tavaliselt, edastame sellele parameetriteks state ja action:

reactionClicked(state, action) {},

Nüüd aga lokkis sulgude sees, mille me jätsime eelmisel sammul tühjaks, kirjutame selle jaoks koodi. Esiteks eraldame toote id payload objektist action ja reaktsiooni nime:

const { productId, reaction } = action.payload

Seejärel saame antud staatist vajaliku toote:

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

Ja kui selline toode on olemas, siis suurendame antud reaktsiooni väärtust 1 võrra:

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

See on kõik, meie kood reactionClicked jaoks on valmis:

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

Faili lõpus eksportime saadud action creator'i:

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

Siin on vaja märkida kaht olulist punkti. Nagu mäletate eelmistest õppetundidest - uuendada niimoodi otse väärtust redutseeri koodis ei tohi (vaadake seda rida: reactions[reaction]++), kuid meil pääseb see õnneks peale, sest me teeme seda createSlice sees, mis kasutab Immer teeki. See hoolitseb selle eest, et meie kood muudetakse "ohutuks" väärtuse uuendamiseks. See võimaldab meil kirjutada keerulisi asju lihtsamal viisil.

Järgmine asi, mida tuleb meeles pidada - objekt action peaks sisaldama minimaalselt võimalikku infohulka - ainult selleks, et näidata, mis juhtus. Selles ei tasu teha mingeid arvutusi. Kõik arvutused staat uuendamiseks tuleks teha redutseeris, siin saab selle jaoks kirjutada nii palju loogikat, kui vaja.

Avage oma õpilaste rakendus ja failis studentsSlice.js lisage veel üks redutseer voteClicked väljale reducers, nagu näidatud tunnis. Kirjutage selle jaoks kood. Teie redutseeri ülesanne - klõpsamisel suurendada väärtust vote (või häält), millele klõpsati, antud õpilase jaoks, 1 võrra.

Faili lõpus ärge unustage eksportida saadud action creator'it voteClicked.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu