⊗jsrxPmRDARR 32 of 57 menu

Додавање редјусера у Redux апликацију

У претходној лекцији смо креирали компонент UserReaction како би сваки производ имао и реакције корисника. Сада морамо написати редјусер који ће руковати бројачем реакција при клику корисника на дугме одређене реакције.

Отворимо нашу апликацију са производима, а у њој фајл productsSlice.js са свим редјусерима. Сада у својству reducers креирајмо још један редјусер reactionClicked (можемо га ставити први - испред productAdded, мада то није битно). Као и увек, проследимо му параметре state и action:

reactionClicked(state, action) {},

А сада унутар витичастих заграда, које смо оставили празне у претходном кораку, напишимо код за њега. Прво ћемо извући id производа из payload објекта action и назив реакције:

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]++ } },

Додајмо на крају фајла експорт добијеног креатора акције:

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

Овде је потребно истаћи две важне ствари. Како се сећате из претходних лекција - није дозвољено директно ажурирати вредност у коду редјусера овако (погледајте овај ред: reactions[reaction]++), али нам је то овде прихватљиво, јер то радимо унутар createSlice, који користи библиотеку Immer. Она ће се побринути да претвори наш код у „безбедно“ ажурирање вредности. Ово нам омогућава да пишемо сложене ствари на једноставнији начин.

Следеће што треба запамтити је да објекат action треба да садржи минималну могућу количину информације - довољну само да укаже шта се десило. Не треба у њему радити никакве прорачуне. Сви прорачуни за ажурирање стања треба да се обављају у редјусеру, где за то можете написати колико год логике потребно.

Отворите вашу апликацију са студентима и у фајлу studentsSlice.js додајте још један редјусер voteClicked у поље reducers, као што је приказано у лекцији. Напишите код за њега. Задатак вашег редјусера је да при клику повећа вредност vote (или гласа), на који је кликнуто, за тог студента, за 1.

На крају фајла не заборавите да извезете добијени креатор акције voteClicked.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј