⊗jsrxPmRDARR 32 of 57 menu

Dodavanje reducera u Redux aplikaciju

U prošloj lekciji smo napravili komponentu UserReaction kako bi svaki proizvod imao i reakcije korisnika. Sada nam je potrebno da napišemo reducer, koji će obrađivati brojač reakcija pri kliku korisnika na dugme za odgovarajuću reakciju.

Hajde da otvorimo našu aplikaciju sa proizvodima, a u njoj fajl productsSlice.js sa svim reducerima. Sada u svojstvu reducers kreiramo još jedan reducer reactionClicked (možemo ga staviti prvi - ispred productAdded, iako to nije bitno). Kao i obično, prosledimo mu parametrima state i action:

reactionClicked(state, action) {},

A sada unutar vitičastih zagrada, koje smo ostavili prazne na prethodnom koraku, napišimo za njega kod. Prvo ćemo izvući id proizvoda iz payload objekta action i naziv reakcije:

const { productId, reaction } = action.payload

Zatim iz prosleđenog steita dobijemo potrebni proizvod:

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

I ako takav proizvod postoji, povećaćemo vrednost prosleđene reakcije za 1:

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

To je sve, naš kod za reactionClicked je spreman:

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

Hajde na kraju fajla da dodamo eksport dobijenog action creator-a:

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

Ovde je neophodno istaći dva važna momenta. Kako se sećate iz prethodnih lekcija - ažurirati ovako direktno vrednost u kodu reducera ne sme (pogledajte ovu liniju: reactions[reaction]++), ali nama će to proći jer to radimo unutar createSlice, koji koristi biblioteku Immer. Ona će se pobrinuti da preuredi naš kod u "bezbedno" ažuriranje vrednosti. Ovo nam omogućava da pišemo kompleksne stvari na jednostavniji način.

Sledeće, što je neophodno zapamtiti - objekat action treba da sadrži minimalno moguću količinu informacija - samo onoliko da bi se ukazalo na to šta se desilo. Ne treba u njemu raditi bilo kakve proračune. Svi proračuni za ažuriranje steita treba da se rade u reduceru, ovde možete napisati za to onoliko logike, koliko je potrebno.

Otvorite vašu aplikaciju sa studentima i u fajlu studentsSlice.js dodajte još jedan reducer voteClicked u polje reducers, kao što je pokazano u lekciji. Napišite kod za njega. Zadatak vašeg reducera - pri kliku da povećava vrednost vote (ili glasa), na koji je kliknuto, za datog studenta, za 1.

Na kraju fajla ne zaboravite da eksportujete dobijeni action creator voteClicked.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij