⊗jsrxPmATCDT 47 of 57 menu

Invio di thunk dal componente in Redux

In questa lezione invieremo un thunk per recuperare i prodotti dal componente React ProductsList.

Ora apriamo la nostra applicazione prodotti, e in essa il file ProductsList.jsx. Per iniziare, aggiungiamo l'import del thunk fetchProducts che abbiamo creato:

import { selectAllProducts, fetchProducts } from './productsSlice'

Avremo anche bisogno dell'hook useDispatch per inviare il nostro action creator e dell'hook useEffect perché qui abbiamo un effetto collaterale, poiché abbiamo a che fare con la rete, e questa è già un'API esterna:

import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux'

Ora, come prima riga di codice nella funzione ProductsList, prima della dichiarazione di products, aggiungiamo:

const dispatch = useDispatch()

Successivamente, quando recuperiamo i prodotti dallo stato, estraremo anche lo stato della richiesta:

const products = useSelector(selectAllProducts) const productStatus = useSelector((state) => state.products.status)

E subito dopo, diremo a React tramite l'hook useEffect, che dopo il rendering del componente dobbiamo recuperare i prodotti. Qui ci servirà lo stato della richiesta, poiché è importante che tale richiesta venga inviata solo una volta:

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Ora possiamo avviare la nostra applicazione, cliccare su 'Products' nel menu a sinistra. Non vedremo ancora l'elenco dei prodotti, ma se accediamo ai nostri Redux DevTools, nella parte sinistra della finestra appariranno le azioni generate automaticamente (come ho detto nella lezione precedente) products/fetchProducts/pending e fulfilled. Ora clicchiamo sull'action products/fetchProducts/fulfilled e sul suo campo payload - ecco la nostra lista di prodotti! Evviva, tutti i nostri anelli della catena - server, database, client e l'applicazione Redux - funzionano in modo coordinato e insieme. A proposito, come potete vedere qui c'è anche la proprietà meta, in cui vediamo lo stato della richiesta.

Prestiamo attenzione a un'altra cosa, potrebbe succederti che pending e, di conseguenza, fulfilled vengano visualizzati due volte. Se è così, non ti scoraggiare, ne parleremo più tardi.

Apri la tua applicazione studenti. Apri in essa il file StudentsList.jsx. Importa in esso gli hook necessari e il thunk secondo il materiale della lezione.

Dopo aver studiato il materiale della lezione, recupera lo stato della richiesta studentStatus, e poi, usando useEffect, invia fetchStudents solo a condizione che il valore di studentStatus sia 'idle'.

Avvia la tua applicazione, clicca nel menu dell'applicazione a sinistra su 'Students', e poi avvia l'estensione del browser Redux DevTools, come in questa lezione dovresti vedere le azioni con pending e fulfilled (e in essa payload con gli studenti). Esplora le schede dell'estensione.

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