⊗jsrxPmRDARR 32 of 57 menu

Lägga till en reducer i ett Redux-applikation

I föregående lektion skapade vi komponenten UserReaction så att varje produkt även skulle ha användarreaktioner. Nu behöver vi skriva en reducer som kommer att hantera räknaren för reaktioner när användaren klickar på knappen för en viss reaktion.

Låt oss öppna vår produktapplikation, och i den filen productsSlice.js med alla reducers. Nu i egenskapen reducers skapar vi ytterligare en reducer reactionClicked (vi kan placera den först - före productAdded, även om det inte spelar någon roll). Som vanligt, skicka den parametrarna state och action:

reactionClicked(state, action) {},

Och nu inuti klammerparenteserna, som vi lämnade tomma i föregående steg, skriver vi koden för den. Först extraherar vi produktens id från payload-objektet action och reaktionens namn:

const { productId, reaction } = action.payload

Sedan från det passerade tillståndet får vi den önskade produkten:

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

Och om en sådan produkt finns, ökar vi värdet för den passerade reaktionen med 1:

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

Det var allt, vår kod för reactionClicked är klar:

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

Låt oss i slutet av filen lägga till export av den resulterande action creator:

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

Här är det nödvändigt att notera två viktiga punkter. Som ni minns från tidigare lektioner - att uppdatera värdet direkt så här i reducerkoden är inte tillåtet (titta på den här raden: reactions[reaction]++), men vi kommer undan med det, för att vi gör det inuti createSlice, som använder biblioteket Immer. Det kommer att se till att omvandla vår kod till en "säker" uppdatering av värdet. Detta tillåter oss att skriva komplexa saker på ett enklare sätt.

Nästa sak att komma ihåg är att objektet action bör innehålla minimal möjlig mängd information - bara för att indikera vad som hände. Gör inga beräkningar i den. Alla beräkningar för att uppdatera tillståndet bör göras i reducern, här kan du skriva så mycket logik för detta som behövs.

Öppna din studentapplikation och i filen studentsSlice.js lägg till ytterligare en reducer voteClicked i fältet reducers, som visas i lektionen. Skriv koden för den. Uppgiften för din reducer är att öka värdet för vote (eller röst), som klickades på, för den aktuella studenten, med 1 när användaren klickar.

I slutet av filen, glöm inte att exportera den resulterande action creator voteClicked.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa