⊗jsrxPmWFRAA 17 of 57 menu

Redux-тағы редьюсер және action

Алдыңғы сабақта біз өнімді қосу үшін форманы аяқтадық және оны басты бетке шығардық. Бірақ қосылған деректер әлі сақталмайды, басқаша айтқанда жаңа өнім store-дағы барларға қосылмайды. Мұны түзейік.

Бастау үшін біздің өнімдер қолдабарымызда productsSlice.jsx файлын ашамыз және createSlice үшін reducer қасиетінде store-ға өнімді қосуға жауапты болатын productAdded функциясын жазамыз, ол берілген ағымдағы стейт пен экшнге негізделеді. Айта кету керек, бұл жерде бізге бүкіл state емес, тек оның өнімдерге жауапты бөлігі беріледі (products слайсы тек сол бөлігін біледі). Жаңа өнім бар объект action объектісінің payload қасиетінде болады, ол формадағы сақтау түймесін басу өңдегіші арқылы жасалады. Нәтижесінде productAdded редьюсері createSlice кодында былай көрінеді:

const productsSlice = createSlice({ name: 'products', initialState, reducers: { productAdded(state, action) { state.push(action.payload) }, }, })

Ал action ше? Оқулықтың ең басында біз action - бұл қолдабада болған нәрсені сипаттайтын, объект түріндегі оқиға екенін атап өткенбіз. Біз action creator функциясын қолдануға болатынын да айтқанбіз, ол бізге мынадай объект жасайды, мысалы:

const addProduct = newProduct => { return { type: 'products/productAdded', payload: newProduct } }

Жақсы жаңалық - бізге ештеңе істеуге қажет жоқ, мұны біз үшін біз қолданатын createSlice функциясы жасайды. Reducer жазған кезде, ол біз үшін сол атаумен action creator-ді автоматты түрде жасайды. Бізге тек компоненттерде одан әрі қолдану үшін алынған action creator-ді экспорттау ғана қалады. Мұны файлдың соңында редьюсерді экспорттау алдында жасаймыз, мыналай:

export const { productAdded } = productsSlice.actions export default productsSlice.reducer

Студенттеріңізбен қолдабарыңызды ашыңыз, содан кейін studentsSlice.jsx файлын ашып, createSlice үшін reducer өрісінің мәнін сабақта көрсетілгендей толтырыңыз.

studentsSlice.jsx файлының соңына алынған 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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау