⊗jsrxPmWFRs 12 of 57 menu

Reducer in Redux

Nella lezione precedente, utilizzando la funzione createSlice, abbiamo creato una slice per i prodotti products e un reducer che aggiornerà questa slice, memorizzata nello store. Ricordo ancora una volta che in Redux i dati dello stato vengono modificati tramite i reducer.

Bisogna ricordare che sui reducer vengono imposte una serie di limitazioni. Un reducer aggiorna lo stato solo in base ai valori ricevuti dello stato corrente e dell'oggetto action, e poi decide come modificare lo stato e restituisce il suo nuovo valore.

Sappiamo che per impostazione predefinita gli oggetti e gli array in JavaScript sono mutabili. Inoltre sappiamo che non è possibile modificare lo state direttamente, in tal caso bisogna lavorare solo con copie. Anche il reducer deve obbedire a questa regola. Ma scrivere manualmente questa logica può essere piuttosto noioso e complesso, e qui viene in aiuto la funzione createSlice, che utilizza la libreria Immer, trasformando il tuo codice 'mutabile' in 'immutabile'. Pertanto, è possibile peccare e semplificare la vita solo quando si utilizzano le funzioni createSlice o createReducer.

Tra le limitazioni dei reducer c'è anche l'uso di logica asincrona, il calcolo di valori casuali e l'esecuzione di altri "effetti collaterali". E ora, dopo aver conosciuto più da vicino il reducer, torniamo alla nostra applicazione con i prodotti.

Nella nostra applicazione c'è uno store, che abbiamo creato nelle lezioni precedenti, ma per ora è vuoto. Apriamo il nostro file store.js e aggiungiamoci un po' di codice. Per iniziare, importiamo in esso la funzione reducer per i prodotti:

import productsReducer from '../parts/products/productsSlice'

Ora come reducer possiamo specificare la funzione importata productsReducer:

export default configureStore({ reducer: { products: productsReducer } })

Con la riga sopra diciamo al nostro store che ora, quando si verifica un'action, tutti i dati per la slice state.products saranno aggiornati dal reducer productsReducer.

Ora puoi avviare l'applicazione (nota che nella console è scomparso l'avviso di reducer non valido!), aprire Redux DevTools nel browser ed esplorare le sue schede. Ad esempio, cliccando sulla scheda State nella scheda Inspector possiamo vedere i nostri due oggetti con i prodotti, che sono stati visualizzati come valore iniziale dello stato al primo avvio dell'applicazione. Nella scheda Log monitor vediamo quali slice contiene lo stato globale - questa è la slice products, che include due oggetti. Dai anche un'occhiata alla scheda Chart.

Apri la tua applicazione con gli studenti e modifica il codice del file store.js, come mostrato nella lezione.

Avvia la tua applicazione nel browser ed esplora le schede dell'estensione Redux DevTools.

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