⊗jsrxPmRDEP 23 of 57 menu

Termék adatainak módosítása a Redux store-ban

Megtanultuk, hogyan kell termékeket hozzáadni, de mi van, ha módosítani szeretnénk a termék információit? Nézzük meg, hogyan tehetjük ezt meg ebben és a következő leckékben.

Nyissuk meg a termék alkalmazásunkat és menjünk a productsSlice.js fájlba. Kezdjük azzal, hogy a products slice-hoz írunk még egy reducer-t, amely akkor fut le, amikor egy terméket frissítünk. Nevezzük el productUpdated-nak és adjuk hozzá a reducers mezőhöz a productAdded reducer után. Átadunk neki paraméterként a state és action értékeket, amelyek alapján, ahogy emlékszünk, a reducer működik:

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

Most gondolkozzunk el azon, hogy milyen adatokra lesz szükségünk a termék frissítéséhez. Először is - ez a id, ezzel megtalálhatjuk a számunkra érdekes terméket a store-ban. A többi adat - név, leírás, ár és mennyiség lesz a módosítandó értékeink. Mindezeket az értékeket az action objektum payload tulajdonságából kapjuk meg, amely hozzánk ér, és ha mi írnánk a kezünkkel, akkor úgy nézne ki, ahogyan az alább látható. Vegye figyelembe, hogy a várt érték a payload tulajdonságnak - egy argumentum, ezért egy objektumot fogunk ide átadni (erről később beszélünk):

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

Miután tisztáztuk a főbb pontokat, most már írhatunk kódot a productUpdated kapcsos zárójelei közé. Először kapjuk meg a action objektumból a módosított adatokat:

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

Most megkeressük a kapott id alapján a terméket, amelyet módosítani kell:

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

Ha találtunk ilyen terméket a store-ban, akkor lecseréljük az adatait az új értékekre:

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

Már csak exportálnunk kell az action creator-t a komponensekben való használathoz, amit a createSlice készít el nekünk. Adjuk hozzá az exporthoz a fájl végén, a meglévő productAdded mellett:

export const { productAdded, productUpdated } = productsSlice.actions

Nyissa meg a diák alkalmazását. Miután tanulmányozta a lecke anyagát, a studentsSlice.js fájlban írjon még egy reducer-t a productsSlice-hoz, amely frissíti a diák adatait a store-ban, ha a felhasználó módosítja azokat. Nevezze el studentUpdated-nak.

Hogyan nézne ki ebben az esetben az Ön action objektuma? Küldje el a kódját a válaszban.

A fájl végén exportálja a kapott action creator-t, a studentUpdated-t.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás