⊗jsrxPmRDEP 23 of 57 menu

Productgegevens wijzigen in Redux store

We hebben geleerd hoe we producten kunnen toevoegen, maar wat als we de informatie over een product willen wijzigen? Laten we in deze en de volgende lessen bekijken hoe we dat kunnen doen.

Laten we onze productapplicatie openen en naar het bestand productsSlice.js gaan. Laten we beginnen met het schrijven van nog een reducer voor de slice products die wordt uitgevoerd wanneer een product wordt bijgewerkt. Laten we het productUpdated noemen en toevoegen aan het veld reducers na de reducer productAdded. Laten we ook onmiddellijk de parameters state en action doorgeven, waarop, zoals we ons herinneren, de reducer werkt:

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

Laten we nu nadenken over welke gegevens we nodig hebben om een product bij te werken. Allereerst is dat het id, daarmee kunnen we het betreffende product in de store vinden. De overige gegevens - naam, beschrijving, prijs en hoeveelheid zullen we hebben om te wijzigen. Al deze waarden krijgen we uit de eigenschap payload van het action-object, dat bij ons binnenkomt, en als we het met de hand zouden schrijven, zou het eruitzien zoals hieronder weergegeven. Merk op dat de verwachte waarde van de eigenschap payload één argument is, dus we zullen hier een object doorgeven (hierover zullen we later praten):

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

Nu we de belangrijkste punten hebben uitgezocht, kunnen we de code voor productUpdated tussen de accolades schrijven. Laten we eerst de gewijzigde gegevens uit het object action halen:

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

Nu vinden we het product dat moet worden gewijzigd op basis van het verkregen id:

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

Als zo'n product is gevonden in de store, vervangen we de gegevens ervan door nieuwe waarden:

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

Het enige dat ons rest is het exporteren van de action creator voor gebruik in de component, die vriendelijk voor ons wordt aangemaakt door createSlice. Laten we deze toevoegen aan de export aan het einde van het bestand, samen met de bestaande productAdded:

export const { productAdded, productUpdated } = productsSlice.actions

Open je studentenapplicatie. Na bestudering van de lesmaterialen, schrijf je in het bestand studentsSlice.js nog een reducer voor productsSlice, die de gegevens van een student in de store bijwerkt wanneer deze door de gebruiker worden gewijzigd. Noem deze studentUpdated.

Hoe zou je action-object er in dit geval uitzien? Stuur de code ervan in het antwoord.

Exporteer aan het einde van het bestand de verkregen action creator studentUpdated.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren