⊗jsrxPmRDEP 23 of 57 menu

Spreminjanje podatkov o izdelku v Redux shrambi

Naučili smo se dodajati izdelke, kaj pa če želimo spremeniti informacije o izdelku? Oglejmo si, kako to narediti v tej in naslednjih lekcijah.

Odprimo našo aplikacijo z izdelki in pojdimo v datoteko productsSlice.js. Začnimo s tem, da moramo za slice products napisati še en reducer, ki se bo sprožil pri posodobitvi izdelka. Poimenujmo ga productUpdated in ga dodajmo v polje reducers za reducerjem productAdded. Prav tako mu nemudoma podajmo parametra state in action, na podlagi katerih, kot se spomnimo, deluje reducer:

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

Zdaj pa pomislimo, kateri podatki bodo potrebni za posodobitev izdelka. Predvsem - to je id, po njem bomo lahko našli zanimivi izdelek v shrambi. Preostali podatki - naziv, opis, cena in količina so na voljo za spreminjanje. Vse te vrednosti bomo dobili iz lastnosti payload objekta action, ki bo prišel do nas, in če bi ga pisali ročno, bi bil videti tako, kot je prikazano spodaj. Upoštevajte, da je pričakovana vrednost lastnosti payload - en argument, zato bomo sem podali objekt (o tem bomo govorili v nadaljevanju):

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

Ko smo razjasnili glavne točke, lahko zdaj napišemo kodo za productUpdated v zavitih oklepajih. Najprej pridobimo iz objekta action spremenjene podatke:

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

Zdaj bomo po pridobljenem id našli izdelek, ki ga je treba spremeniti:

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

Če je bil tak izdelek najden v shrambi, potem bomo njegove podatke zamenjali z novimi vrednostmi:

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

Preostane nam le še izvoz action creatorja za uporabo v komponenti, ki ga bo prijazno ustvaril za nas createSlice. Dodajmo ga k izvozu na koncu datoteke, skupaj z obstoječim productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Odprite vašo aplikacijo s študenti. Po preučitvi gradiva lekcije, v datoteki studentsSlice.js dopolnite še en reducer za productsSlice, ki bo posodabljal podatke študenta v shrambi v primeru, da jih uporabnik spremeni. Poimenujte ga studentUpdated.

Kako bi bil v tem primeru videti vaš objekt action? Pošljite njegovo kodo v odgovoru.

Na koncu datoteke izvozite pridobljeni 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
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni