⊗jsrxPmRDEP 23 of 57 menu

Endring av produktdata i Redux store

Vi har lært å legge til produkter, men hva hvis vi ønsker å endre informasjonen om et produkt? La oss se på hvordan dette gjøres i denne og de påfølgende leksjonene.

La oss åpne produktapplikasjonen vår og gå inn i filen productsSlice.js. Vi begynner med at vi for products-slicet trenger å skrive en ny reducer, som vil kjøre når et produkt oppdateres. La oss kalle den productUpdated og legge den til i feltet reducers etter productAdded-reduceren. La oss også umiddelbart sende den parameterne state og action, som vi husker at reduceren arbeider på grunnlag av:

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

La oss nå tenke på hvilke data vi trenger for å oppdatere et produkt. Først og fremst - id, ved hjelp av den kan vi finne produktet vi er interessert i i storet. De andre dataene - navn, beskrivelse, pris og antall vil vi ha for endring. Alle disse verdiene vil vi få fra egenskapen payload i action-objektet, som vil komme til oss, og hvis vi skrev det for hånd, ville det sett ut som vist nedenfor. Legg merke til at forventet verdi for egenskapen payload er ett argument, så vi vil sende et objekt hit (dette vil vi snakke mer om senere):

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

Etter å ha avklart hovedpunktene, kan vi nå skrive koden for productUpdated i krøllparentesene. Først henter vi de endrede dataene fra action-objektet:

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

Nå finner vi produktet som skal endres ved hjelp av den mottatte id-en:

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

Hvis et slikt produkt ble funnet i storet, erstatter vi dataene med de nye verdiene:

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

Det eneste som gjenstår for oss er å eksportere action creator for bruk i komponenten, som createSlice vil venligst opprette for oss. La oss legge den til eksporten på slutten av filen, sammen med den eksisterende productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Åpne studentapplikasjonen din. Etter å ha studert leksjonsmaterialet, i filen studentsSlice.js skriv videre på en ny reducer for productsSlice, som vil oppdatere studentdata i storet i tilfelle de endres av brukeren. Kall den studentUpdated.

Hvordan ville action-objektet ditt sett ut i dette tilfellet? Send koden i svaret.

Eksporter den resulterende action creatoren studentUpdated på slutten av filen.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis