⊗jsrxPmRDEP 23 of 57 menu

Ändra produktdata i Redux store

Vi har lärt oss att lägga till produkter, men vad händer om vi vill ändra informationen om en produkt? Låt oss ta en titt på hur man gör det i den här och de kommande lektionerna.

Öppna vår produktapplikation och gå till filen productsSlice.js. Vi börjar med att för products-slicen behöva skriva ytterligare en reducer, som kommer att triggas när en produkt uppdateras. Låt oss kalla den productUpdated och lägga till den i fältet reducers efter productAdded-reducern. Vi skickar också in parametrarna state och action direkt, som vi minns att reducern arbetar med:

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

Låt oss nu fundera på vilken data vi behöver för att uppdatera en produkt. Framför allt - ett id, med det kan vi hitta den aktuella produkten i store:n. Resten av datat - namn, beskrivning, pris och antal kommer vi att ha tillgängligt för ändring. Alla dessa värden kommer vi att få från egenskapen payload i action-objektet, som kommer till oss, och om vi skulle skriva det för hand skulle det se ut så som visas nedan. Observera att det förväntade värdet för egenskapen payload är ett argument, så vi kommer att skicka in ett objekt här (mer om det senare):

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

Efter att ha klarlagt huvudpunkterna kan vi nu skriva koden för productUpdated inom klammerparenteserna. Först hämtar vi den ändrade datan från action-objektet:

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

Nu hittar vi produkten som behöver ändras via det mottagna id:et:

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

Om en sådan produkt hittades i store:n, ersätter vi dess data med de nya värdena:

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

Allt som återstår är att exportera action creator för användning i komponenten, som createSlice vänligen skapar åt oss. Låt oss lägga till den till exporten i slutet av filen, tillsammans med den befintliga productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Öppna din studentapplikation. Efter att ha studerat lektionsmaterialet, i filen studentsSlice.js, lägg till ytterligare en reducer för productsSlice, som kommer att uppdatera studentdata i store:n om de ändras av användaren. Kalla den studentUpdated.

Och hur skulle ditt action-objekt se ut i det här fallet? Skicka dess kod i svaret.

Exportera den resulterande action creator:n studentUpdated i slutet av filen.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa