⊗jsrxPmRDEP 23 of 57 menu

Zmena údajov produktu v Redux store

Naučili sme sa pridávať produkty, ale čo ak chceme zmeniť informácie o produkte? Poďme si v tejto a nasledujúcich lekciách pozrieť, ako to urobiť.

Otvorme našu aplikáciu s produktmi a prejdime do súboru productsSlice.js. Začnime tým, že pre slice products potrebujeme napísať ďalší reducer, ktorý sa spustí pri aktualizácii produktu. Pomenujeme ho productUpdated a pridáme do poľa reducers za reducer productAdded. Tiež mu hneď odovzdajme parametre state a action, na základe ktorých, ako si pamätáme, reducer funguje:

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

Teraz sa zamyslime, aké údaje budeme potrebovať na aktualizáciu produktu. Predovšetkým - to je id, podľa ktorého vieme nájsť produkt, ktorý nás zaujíma, v store. Ostatné údaje - názov, popis, cena a množstvo budú pre nás na zmenu. Všetky tieto hodnoty dostaneme z vlastnosti payload objektu action, ktorý k nám príde, a keby sme ho písali ručne, vyzeral by tak, ako je to znázornené nižšie. Všimnite si, že očakávaná hodnota vlastnosti payload je jeden argument, preto budeme odovzdávať sem objekt (o tom si povieme neskôr):

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

Po objasnení hlavných bodov teraz môžeme napísať do zložených zátvoriek kód pre productUpdated. Najprv získame z objektu action zmenené údaje:

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

Teraz nájdeme podľa získaného id produkt, ktorý je potrebné zmeniť:

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

Ak sa takýto produkt našiel v store, tak jeho údaje nahradíme novými hodnotami:

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

Zostáva nám už len exportovať action creator na použitie v komponente, ktorý za nás láskavo vytvorí createSlice. Pridajme ho na konci súboru k exportu, spolu s existujúcim productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Otvorte svoju aplikáciu so študentmi. Po preštudovaní materiálu lekcie v súbore studentsSlice.js doplňte ďalší reducer pre productsSlice, ktorý bude aktualizovať údaje študenta v store v prípade ich zmeny používateľom. Pomenujte ho studentUpdated.

A ako by v tomto prípade vyzeral váš objekt action? Pošlite jeho kód v odpovedi.

Na konci súboru exportujte získaný action creator studentUpdated.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť