⊗jsrxPmRDEP 23 of 57 menu

Tooteandmete muutmine Redux store'is

Me õppisime tooteid lisama, aga mis siis, kui me soovime toote infot muuta? Vaatame selles ja järgnevates tundides, kuidas seda teha.

Avame oma tooterakenduse ja läheme faili productsSlice.js. Alustame sellest, et meil on vaja products lõigule kirjutada veel üks reducer, mis käivitub toote uuendamisel. Nimetame selle productUpdated ja lisame väljale reducers pärast reducerit productAdded. Samuti edastame sellele kohe parameetritena state ja action, mille põhjal, nagu me mäletame, reducer töötab:

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

Nüüd mõtleme, milliseid andmeid meil vaja on toote uuendamiseks. Enne kõike - see on id, selle abil saame leida meid huvitava toote store'ist. Ülejäänud andmed - nimi, kirjeldus, hind ja kogus on meil muutmiseks. Kõik need väärtused saame omadusest payload action objektil, mis meile tuleb, ja kui me kirjutaksime seda käsitsi, siis see näeks välja nagu allpool näidatud. Pange tähele, et oodatav väärtus omadusel payload - üks argument, seega me edastame siia objekti (sellest räägime edaspidi):

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

Põhipunktid selgitatud, nüüd saame kirjutada lokkis sulgudes koodi productUpdated jaoks. Kõigepealt saame objektist action muudetud andmed:

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

Nüüd leiame saadud id põhjal toote, mida on vaja muuta:

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

Kui selline toode leiti store'ist, siis me asendame selle andmed uute väärtustega:

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

Meil jääb üle vaid eksportida action creator kasutamiseks komponendis, mille meile loob lahkelt createSlice. Lisame selle ekspordi faili lõppu, koos olemasoleva productAdded kõrval:

export const { productAdded, productUpdated } = productsSlice.actions

Avage oma üliõpilaste rakendus. Õppematerjali läbi uurides, failis studentsSlice.js kirjutage veel üks reducer productsSlice jaoks, mis uuendab üliõpilase andmeid store'is juhul, kui kasutaja need muudab. Nimetage see studentUpdated.

A kuidas näeks sel juhul teie action objekt välja? Saatke selle kood vastusena.

Faili lõpus eksportige saadud action creator studentUpdated.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu