⊗jsrxPmRDARR 32 of 57 menu

Kuongeza Reducer kwenye Programu ya Redux

Katika somo lililopita tuliumba komponeneti UserReaction ili kila bidhaa iwe na athari za watumiaji pia. Sasa tunahitaji kuandika reducer, ambayo itashughulikia kiwango cha kuhesabu athari wakati mtumiaji anapobofya kitufe cha athari fulani.

Wacha tufungue programu yetu ya bidhaa, na ndani yake faili productsSlice.js iliyo na reducers zote. Sasa katika sifa reducers tuunde reducer nyingine reactionClicked (tunaweza kuiweka mwanzoni - kabla ya productAdded, ingawa haijalishi). Kama kawaida, tupeane viingizo state na action:

reactionClicked(state, action) {},

Na sasa ndani ya mabano ya curly, ambayo tuliyacha wazi katika hatua iliyopita, tuandike kodi yake. Kwanza tutatoa kitambulisho cha bidhaa (id) kutoka kwenye payload kitu cha action na jina la athari:

const { productId, reaction } = action.payload

Kisha kutoka kwa hali (state) iliyopitwa tupate bidhaa inayohitajika:

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

Na ikiwa kuna bidhaa kama hiyo, basi tuongeze thamani ya athari iliyopitwa kwa 1:

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

Haya yote, kodi yetu kwa reactionClicked iko tayari:

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

Wacha mwishoni mwa faili tuongeze usafirishaji (export) wa muumba hatua (action creator) uliopatikana:

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

Hapa ni muhimu kukumbuka mambo mawili muhimu. Kama unavyokumbuka kutoka kwenye masomo yaliyopita - kusasisha thamani kwa njia ya moja kwa moja kwenye msimbo wa reducer hairuhusiwi (angalia mstari huu: reactions[reaction]++), lakini sisi tutaweza kukubalika kwa sababu tunafanya hivyo ndani ya createSlice, ambayo inatumia maktaba ya Immer. Na ndiyo itajihusisha na kuhakikisha kuwa msimbo wetu unabadilishwa kuwa usasishaji "salama" wa thamani. Hii inaturuhusu kuandika mambo magumu kwa njia rahisi zaidi.

Kitu kinachofuata, ambacho ni muhimu kukumbuka - kitu action kinapaswa kuwa na kiwango cha chini kinachowezekana cha habari - tu kwa ajili ya kuonyesha nini kimetokea. Haifai kufanya mahesabu yoyote ndani yake. Mahesabu yote kwa ajili ya kusasisha hali (state) yanafaa kufanywa kwenye reducer, hapa unaweza kuandika mantiki yoyote kwa ajili hiyo, kwa kadri itakavyohitajika.

Fungua programu yako ya wanafunzi na kwenye faili studentsSlice.js ongeza reducer nyingine voteClicked kwenye uwanja reducers, kama inavyoonyeshwa kwenye somo. Andika msimbo wake. Kazi ya reducer yako - wakati wa kubofya kuongeza thamani ya vote (au kura), ambayo ilibofywa, kwa mwanafunzi huyo, kwa 1.

Mwishoni mwa faili usisahau kusafirisha (export) muumba hatua (action creator) uliopatikana voteClicked.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa