⊗jsrxPmRDEP 23 of 57 menu

Redux store-ում արտադրանքի տվյալների փոփոխում

Մենք սովորեցինք ավելացնել արտադրանքը, բայց ինչ եթե ցանկանանք փոխել տեղեկատվությունը արտադրանքի մասին: Եկեք դիտարկենք, թե ինչպես դա անել այս և հաջորդ դասերին:

Բացենք մեր արտադրանքի հավելվածը և մտնենք productsSlice.js ֆայլը: Սկսենք այն բանից, որ մեզ անհրաժեշտ է products սլայսի համար գրել ևս մեկ reducer, որը կգործարկվի արտադրանքի թարմացման ժամանակ: Անվանենք այն productUpdated և ավելացնենք դաշտում reducers՝ productAdded reducer-ից հետո: Նաև անմիջապես փոխանցենք դրան պարամետրերով state և action, որոնց հիման վրա, ինչպես հիշում ենք, աշխատում է reducer-ը:

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 ֆայլում գրեք ևս մեկ reducer productsSlice-ի համար, որը կթարմացնի ուսանողի տվյալները store-ում, եթե դրանք փոխվել են օգտատիրոջ կողմից: Անվանեք այն studentUpdated:

Իսկ ինչպե՞ս կերևար այս դեպքում ձեր action օբյեկտը: Ուղարկեք դրա կոդը պատասխանում:

Ֆայլի վերջում էքսպորտեք ստացված action creator studentUpdated-ը:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել