⊗jsrxPmRDMDO 30 of 57 menu

Riutilizzo dei dati da una slice in Redux

Nella lezione precedente abbiamo aggiunto al modulo per l'aggiunta del prodotto un altro campo con un menu a discesa per selezionare il venditore che lo pubblica. Supponiamo ora di dover visualizzare queste informazioni in altre parti dell'applicazione. Per fare ciò, non duplicheremo ogni volta il codice, ma creeremo semplicemente un componente separato, in cui estrarremo i dati dalla slice e li visualizzeremo nelle parti dell'applicazione dove ci servono.

Apriamo la nostra applicazione dei prodotti. Ora creiamo nella cartella products un altro file SellerOfProd.jsx. Per cominciare importiamo l'hook useSelector, con cui otterremo la slice con il prodotto necessario:

import { useSelector } from 'react-redux'

Poi estraiamo dallo store il prodotto necessario tramite l'id del venditore, che passeremo al nostro nuovo componente tramite props:

export const SellerOfProd = ({ sellerId }) => { const seller = useSelector((state) => state.sellers.find((seller) => seller.id === sellerId) ) }

E nel caso in cui tale venditore esista, restituiremo il suo nome, altrimenti restituiremo 'unknown':

return <span>by {seller ? seller.name : 'unknown'}</span>

Ora importiamo il nostro nuovo componente in ProductsList.jsx e inseriamolo nella funzione ProductsList subito dopo il titolo con il nome del prodotto. Come vedete, gli abbiamo passato l'id tramite props:

<SellerOfProd sellerId={product.seller} />

Ora, se avviamo la nostra applicazione, aggiungiamo un nuovo prodotto e lo troviamo nella lista, vedremo che ha un venditore, mentre per i prodotti aggiunti automaticamente all'avvio dell'applicazione, ci sarà 'unknown'.

Una piccola digressione: se il vostro eslint in VS Code segnala un errore su sellerId, ma l'applicazione funziona, potete ignorarlo per ora o aprire il file .eslintrc.cjs della vostra applicazione e in rules aggiungere "react/prop-types": "off".

È ovvio che vorremmo aggiungere le informazioni sul venditore anche nella pagina del prodotto. Per fare ciò, inseriamo nel markup di ProductPage dopo il titolo con il nome del prodotto nuovamente questa riga e verifichiamo che tutto funzioni:

<SellerOfProd sellerId={product.seller} />

Aprite la vostra applicazione con gli studenti. Dopo aver studiato il materiale della lezione, nella cartella students create un file per il componente TeacherForStudent. Il componente deve restituire il nome completo del docente, e accanto tra parentesi la materia che insegna. Trovate il docente necessario utilizzando l'hook useSelector. Se il docente per questo studente non è presente, visualizzate 'anonym'.

Utilizzando il componente ottenuto nella task precedente, visualizzate i dati del docente per ogni studente nella pagina con l'elenco degli studenti.

Fate la stessa cosa della task precedente, ma per la singola pagina dello studente.

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