⊗jsrxPmRDMDO 30 of 57 menu

Πολυπλάσια χρήση δεδομένων από ένα slice στο Redux

Στο προηγούμενο μάθημα, προσθέσαμε στη φόρμα προσθήκης προϊόντος ένα ακόμη πεδίο με μια αναπτυσσόμενη λίστα για την επιλογή του πωλητή που το δημοσιεύει. Ας υποθέσουμε ότι τώρα χρειάζεται να εμφανίσουμε αυτήν την πληροφορία σε αρκετά ακόμη σημεία της εφαρμογής. Για αυτό, δεν θα αντιγράφουμε τον κώδικα κάθε φορά, αλλά απλά θα δημιουργήσουμε ένα ξεχωριστό component, στο οποίο θα ανακτούμε τα δεδομένα από το slice και θα τα εμφανίζουμε στα μέρη της εφαρμογής που χρειαζόμαστε.

Ας ανοίξουμε την εφαρμογή μας με τα προϊόντα. Ας δημιουργήσουμε τώρα στον φάκελο products ένα ακόμη αρχείο SellerOfProd.jsx. Αρχικά, ας εισάγουμε το hook useSelector, με τη βοήθεια του οποίου θα παίρνουμε το slice με το απαιτούμενο προϊόν:

import { useSelector } from 'react-redux'

Στη συνέχεια, ας ανακτήσουμε από το store το απαιτούμενο προϊόν με βάση το id του πωλητή, το οποίο θα μεταβιβάζουμε στο νέο μας component μέσω των props:

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

Και σε περίπτωση που υπάρχει αυτός ο πωλητής, θα επιστρέφουμε το όνομά του, ενώ αν δεν υπάρχει, θα επιστρέφουμε 'unknown':

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

Ας εισάγουμε τώρα το νέο μας component στο ProductsList.jsx και ας το εισάγουμε στη συνάρτηση ProductsList αμέσως μετά τον τίτλο με το όνομα του προϊόντος. Όπως βλέπετε, του μεταβιβάσαμε στα props το id:

<SellerOfProd sellerId={product.seller} />

Τώρα, αν εκκινήσουμε την εφαρμογή μας, προσθέσουμε ένα νέο προϊόν και το βρούμε στη λίστα, θα δούμε ότι έχει εμφανιστεί ο πωλητής του, ενώ για τα προϊόντα που προστέθηκαν αυτόματα κατά την εκκίνηση της εφαρμογής, θα εμφανίζεται 'unknown'.

Μια μικρή παρένθεση: αν το eslint σας στον editor VS Code παραπονιέται για το sellerId, αλλά η εφαρμογή λειτουργεί, μπορείτε προσωρινά να το αγνοήσετε ή να ανοίξετε το αρχείο .eslintrc.cjs της εφαρμογής σας και στις rules να προσθέσετε "react/prop-types": "off".

Εννοείται, ότι θα θέλαμε να προσθέσουμε πληροφορίες για τον πωλητή και στην σελίδα του προϊόντος. Για αυτό, ας εισάγουμε στο markup του ProductPage μετά τον τίτλο με το όνομα του προϊόντος ξανά αυτή τη γραμμή και ας ελέγξουμε ότι όλα λειτουργούν:

<SellerOfProd sellerId={product.seller} />

Ανοίξτε την εφαρμογή σας με τους μαθητές. Μελετώντας το υλικό του μαθήματος, στον φάκελο students δημιουργήστε ένα αρχείο για το component TeacherForStudent. Στο αποτέλεσμα, το component θα πρέπει να επιστρέφει το Ονοματεπώνυμο του καθηγητή, και δίπλα σε παρενθέσεις το μάθημα που διδάσκει. Βρείτε τον απαιτούμενο καθηγητή χρησιμοποιώντας το hook useSelector. Αν ο καθηγητής για αυτόν τον μαθητή απουσιάζει, εμφανίστε 'anonym'.

Με τη βοήθεια του component που λάβατε από την προηγούμενη άσκηση, εμφανίστε τα δεδομένα του καθηγητή για κάθε μαθητή στη σελίδα με τη λίστα των μαθητών.

Κάντε το ίδιο, όπως και στην προηγούμενη άσκηση, αλλά για την ξεχωριστή σελίδα ενός μαθητή.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη