⊗jsrxPmRDEP 23 of 57 menu

Modifica dei dati del prodotto in Redux store

Abbiamo imparato ad aggiungere prodotti, ma cosa succede se vogliamo modificare le informazioni di un prodotto? Esaminiamo come fare in questa e nelle prossime lezioni.

Apriamo la nostra applicazione di prodotti e andiamo al file productsSlice.js. Iniziamo con il fatto che per lo slice products dobbiamo scrivere un altro reducer, che verrà attivato quando un prodotto viene aggiornato. Chiamiamolo productUpdated e aggiungiamolo al campo reducers dopo il reducer productAdded. Inoltre passiamogli subito come parametri state e action, sulla base dei quali, come ricordiamo, opera il reducer:

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

Ora pensiamo a quali dati ci serviranno per aggiornare il prodotto. Prima di tutto - l'id, con esso potremo trovare il prodotto che ci interessa nello store. Gli altri dati - nome, descrizione, prezzo e quantità saranno a nostra disposizione per la modifica. Tutti questi valori li otterremo dalla proprietà payload dell'oggetto action, che ci arriverà, e, se lo scrivessimo manualmente, apparirebbe come mostrato sotto. Notate che il valore atteso della proprietà payload è un singolo argomento, quindi passeremo qui un oggetto (di questo parleremo in seguito):

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

Chiariti i punti principali, ora possiamo scrivere tra le parentesi graffe il codice per productUpdated. Prima otteniamo dall' oggetto action i dati modificati:

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

Ora troveremo, tramite l'id ottenuto, il prodotto che deve essere modificato:

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

Se tale prodotto viene trovato nello store, sostituiremo i suoi dati con i nuovi valori:

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

Ci resta solo da esportare l'action creator per l'uso nel componente, che createSlice creerà gentilmente per noi. Aggiungiamolo all'esportazione alla fine del file, assieme a productAdded esistente:

export const { productAdded, productUpdated } = productsSlice.actions

Aprite la vostra applicazione con gli studenti. Dopo aver studiato il materiale della lezione, nel file studentsSlice.js scrivete un altro reducer per productsSlice, che aggiornerà i dati dello studente nello store in caso di modifica da parte dell'utente. Chiamatelo studentUpdated.

E come apparirebbe in questo caso il vostro oggetto action? Inviate il suo codice nella risposta.

Alla fine del file esportate l'action creator ottenuto studentUpdated.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta