⊗jsrxPmRDARR 32 of 57 menu

Redux ilovasiga reducer qo'shish

O'tgan darsda biz har bir mahsulotga foydalanuvchi reaktsiyalari bo'lishi uchun UserReaction komponentini yaratdik. Endi foydalanuvchi qaysidir reaktsiya tugmasini bosganda reaktsiya hisoblagichini boshqaradigan reducerni yozishimiz kerak.

Keling, mahsulotlar ilovamizni ochaylik, undagi productsSlice.js faylini barcha reducerlar bilan. Endi reducers xususiyatida yana bir reducer reactionClicked yaratamiz (uni birinchi o'ringa - productAdded dan oldin qo'yishimiz mumkin, garchi bu ahamiyatsiz). Odatiy kabi, unga state va action parametrlarini uzatamiz:

reactionClicked(state, action) {},

Endi oldingi qadamda bo'sh qoldirgan jingalak qavslar ichiga uning uchun kod yozamiz. Birinchidan, mahsulot id sini action ob'ektining payload dan va reaktsiya nomini olamiz:

const { productId, reaction } = action.payload

Keyin berilgan statedan kerakli mahsulotni olamiz:

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

Va agar bunday mahsulot mavjud bo'lsa, berilgan reaktsiya qiymatini 1 ga oshiramiz:

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

Hammasi shu, bizning reactionClicked uchun kod tayyor:

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

Keling, fayl oxirida yaratilgan action creatorni eksport qilamiz:

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

Bu yerda ikkita muhim nuqtani ta'kidlash kerak. Siz oldingi darslardan eslaysiz - reducer kodida qiymatni to'g'ridan-to'g'ri shunday yangilash mumkin emas (ushbu qatorga qarang: reactions[reaction]++), lekin biz bunga yo'l qo'yamiz, chunki biz buni createSlice ichida qilmoqdamiz, u esa Immer kutubxonasidan foydalanadi. U bizning kodimizni qiymatni "xavfsiz" yangilashga aylantirish uchun g'amxo'rlik qiladi. Bu bizga murakkab narsalarni oddiyroq usulda yozish imkonini beradi.

Yodda tutish kerak bo'lgan keyingi narsa - action ob'ekti minimal mumkin bo'lgan ma'lumotni o'z ichiga olishi kerak - faqat nima sodir bo'lganligini ko'rsatish uchun. Unda hech qanday hisob-kitob qilish shart emas. State yangilash uchun barcha hisob-kitoblar reducerda amalga oshirilishi kerak, buning uchun qancha mantiq kerak bo'lsa, shuncha yozish mumkin.

Talabalar ilovingizni oching va studentsSlice.js faylida reducers maydoniga darsda ko'rsatilgandek yana bir reducer voteClicked qo'shing. Uning uchun kod yozing. Sizning reducer vazifangiz - bosilgan vote (yoki ovoz) qiymatini ushbu talaba uchun 1 ga oshirish.

Fayl oxirida yaratilgan voteClicked action creatorni eksport qilishni unutmang.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish