⊗jsrxPmRDARR 32 of 57 menu

Redux қолданбасына редьюсерді қосу

Алдыңғы сабақта біз әрбір өнімде пайдаланушы реакциялары болуы үшін UserReaction компонентін жасадық. Енді пайдаланушы реакция түймесін басқанда реакция санағышын өңдейтін редьюсерді жазуымыз керек.

Өнімдеріміз бар қолданбамызды ашып, ондағы барлық редьюсерлері бар productsSlice.js файлын ашайық. Енді reducers қасиетінде тағы бір reactionClicked редьюсерін жасайық (оны бірінші орынға - productAdded-ден бұрын қоя аламыз, бірақ бұл маңызды емес). Әдеттегідей, оған state және action параметрлерін береміз:

reactionClicked(state, action) {},

Енді алдыңғы қадамда бос қалдырған бұйра жақшалардың ішінде оған код жазайық. Біріншіден, біз action объектісінің payload-ынан өнімнің id-сін және реакция атауын шығарамыз:

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

Файлдың соңында алынған action creator-ді экспорттауды қосамыз:

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

Мұнда екі маңызды сәтті атап өту керек. Алдыңғы сабақтардан есіңізде болса - редьюсер кодында мәнді тікелей осылай жаңартуға болмайды (мына жолға назар аударыңыз: reactions[reaction]++), бірақ бізге бұл жарайды, себебі біз мұны Immer кітапханасын қолданатын createSlice ішінде жасаймыз. Біздің кодты мәнді "қауіпсіз" жаңартуға қайта жасауға дәл сол қамқорлық жасайды. Бұл бізге күрделі нәрселерді қарапайым тәсілмен жазуға мүмкіндік береді.

Келесі есте сақтау керек нәрсе - action объектісі мүмкін болатын минималды ақпаратты ғана қамтуы керек - не болғанын көрсету үшін ғана. Онда ешқандай есептеулер жасамаңыз. Стейтті жаңарту үшін барлық есептеулер редьюсерде жасалуы керек, мұнда бұл үшін қажет болғанша логиканы жазуға болады.

Студенттеріңіз бар қолданбаны ашып, studentsSlice.js файлында сабақта көрсетілгендей reducers өрісіне тағы бір voteClicked редьюсерін қосыңыз. Оған код жазыңыз. Сіздің редьюсеріңіздің міндеті - басылған vote (немесе дауыс) мәнін осы студент үшін 1-ге көбейту.

Файлдың соңында алынған voteClicked action creator-ін экспорттауды ұмытпаңыз.

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