⊗jsrxPmRDEP 23 of 57 menu

Redux store-дегі өнім деректерін өзгерту

Біз өнімдерді қосуға үйрендік, бірақ егер біз өнім туралы ақпаратты өзгерткіміз келсе ше? Мұны қалай жасауға болатынын осы және келесі сабақтарда қарастырайық.

Өнімдер қолданбасын ашып, productsSlice.js файлына кірейік. products слайсы үшін бізге өнімді жаңарту кезінде іске қосылатын тағы бір reducer жазуды бастайық. Оны productUpdated деп атап, productAdded редьюсерінен кейін reducers өрісіне қосамыз. Сондай-ақ оған бірден state және action параметрлерін береміз, олардың негізінде, есімізде болғандай, редьюсер жұмыс істейді:

reducers: { productAdded(state, action) { state.push(action.payload) }, productUpdated(state, action) {}, },

Енді өнімді жаңарту үшін бізге қандай деректер қажет болатынын ойланайық. Ең алдымен - бұл id, оның көмегімен біз store-дағы бізді қызықтыратын өнімді таба аламыз. Қалған деректер - атауы, сипаттамасы, бағасы және саны бізде өзгерту үшін болады. Барлық бұл мәндерді біз action объектісінің payload қасиетінен аламыз, ол бізге келеді және, егер біз оны қолмен жазған болсақ, ол төменде көрсетілгендей көрінер еді. Назар аударыңыз, payload қасиетінің күтілетін мәні - бір аргумент, сондықтан біз осыған объект береміз (бұл туралы біз кейінірек сөйлесетін боламыз):

{ type: 'products/productUpdated', payload: {id, name, desc, price, amount} }

Негізгі сәттерді анықтаған соң, енді біз productUpdated үшін кодты фигурлі жақшаға жаза аламыз. Алдымен action объектісінен өзгертілген деректерді алайық:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload },

Енді біз алынған id бойынша өзгертілуі керек өнімді табамыз:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) },

Егер мұндай өнім store-да табылса, онда біз оның деректерін жаңа мәндермен ауыстырамыз:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) if (desiredProduct) { desiredProduct.name = name desiredProduct.desc = desc desiredProduct.price = price desiredProduct.amount = amount } },

Бізге компонентте қолдану үшін action creator-ді экспорттау ғана қалады, оны біз үшін createSlice жасайды. Оны бар болған productAdded қатар файл соңындағы экспортқа қосаайық:

export const { productAdded, productUpdated } = productsSlice.actions

Студенттеріңізбен қолданбаны ашыңыз. Сабақ материалын зерттеп, studentsSlice.js файлында productsSlice үшін пайдаланушы өзгерткен жағдайда store-дағы студент деректерін жаңартатын тағы бір reducer жазбыласы. Оны studentUpdated деп атаңыз.

Бұл жағдайда сіздің action объектіңіз қалай көрінер еді? Оның кодін жауапта жіберіңіз.

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