⊗jsrtPmCpPS 85 of 112 menu

Μεταβίβαση States σε Παιδικά Components στο React

Ας υποθέσουμε ότι έχουμε έναν πίνακα με προϊόντα:

const initProds = [ {id: id(), name: 'product1', cost: 100}, {id: id(), name: 'product2', cost: 200}, {id: id(), name: 'product3', cost: 300}, ];

Ας υποθέσουμε ότι αυτός ο πίνακας βρίσκεται στο component Products. Ας γράψουμε αυτά τα προϊόντα στην κατάσταση του component:

function Products() { const [prods, setProds] = useState(initProds); }

Τώρα ας διατρέξουμε τα προϊόντα με βρόχο και ας τα εμφανίσουμε σε κάποια markup:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <div key={prod.id}> name: <span>{prod.name}</span>, cost: <span>{prod.cost}</span> </div>; }); return <div> {items} </div>; }

Όπως βλέπετε, το περιεχόμενο του βρόχου map είναι αρκετά πολύπλοκο, ειδικά αν το markup του προϊόντος αναπτυχθεί στο μέλλον. Αυτή η πολυπλοκότητα δυσκολεύει την ανάγνωση, την κατανόηση και τη συντήρηση του κώδικα.

Θα είναι καλύτερα να εξαγάγουμε τον κώδικα που είναι υπεύθυνος για την εμφάνιση του προϊόντος σε ξεχωριστό component. Ας το ονομάσουμε Product. Εδώ είναι ο κώδικας του component μας:

function Product({ name, cost }) { return <div> name: <span>{name}</span>, cost: <span>{cost}</span> </div>; }

Ας τώρα μέσα στο component Products στον βρόχο map να χρησιμοποιήσουμε παιδικά components Product:

function Products() { const [prods, setProds] = useState(initProds); const items = prods.map(prod => { return <Product key ={prod.id} name={prod.name} cost={prod.cost} />; }); return <div> {items} </div>; }

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

Τεχνικά, καταλήγουμε ότι το γονικό component έχει state με δεδομένα, ενώ τα παιδικά components λαμβάνουν αυτά τα δεδομένα σε μορφή props και τα εμφανίζουν με τον τρόπο που θέλουμε.

Στο state του component Users δίνεται ο ακόλουθος πίνακας:

const initUsers = [ {id: id(), name: 'user1', surname: 'surn1', age: 30}, {id: id(), name: 'user2', surname: 'surn2', age: 31}, {id: id(), name: 'user3', surname: 'surn3', age: 32}, ];

Διατρέξτε αυτόν τον πίνακα με βρόχο και εμφανίστε όλους τους χρήστες στην οθόνη. Δημιουργήστε για την εμφάνιση του χρήστη ξεχωριστό component User.

Ελληνικά
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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη