⊗jsrtPmRtGLDP 36 of 47 menu

Λήψη δεδομένων loader από URL παραμέτρους στο React Router

Στο προηγούμενο μάθημα γράψαμε μια συνάρτηση για τη λήψη δεδομένων της σελίδας προϊόντος, ας εισαγάγουμε το getProduct στο αρχείο product.jsx:

import { getProduct } from '../forStorage';

Ας γράψουμε τη συνάρτηση loader loader αμέσως μετά την εισαγωγή και πριν από τη συνάρτηση Product. Ας περάσουμε σε αυτήν τις URL παραμέτρους:

export async function loader({ params }) { const product = await getProduct(params.productId); return { product }; }

Επίσης, ας εισάγουμε το hook useLoaderData για τη χρήση των δεδομένων που λαμβάνονται από το loader:

import { useLoaderData } from 'react-router-dom';

Ας εφαρμόσουμε το useLoaderData, αντικαθιστώντας αντίστοιχα τη γραμμή με τη δημιουργία του αντικειμένου product στην αρχή της συνάρτησης Product με την ακόλουθη:

const { product } = useLoaderData();

Και, φυσικά, ας αλλάξουμε λίγο το markup μας, αφού αφαιρέσαμε το παλιό αντικείμενο product. Ας αντικαταστήσουμε το περιεχόμενο των παραγράφων:

<p>Name: {product.name}</p> <p>Cost: {product.cost}</p> <p>Amount: {product.amount}</p>

Με το ακόλουθο:

<p>Name: {product.name ? product.name : <i>unnamed</i>}</p> <p>Cost: {product.cost ? product.cost : <i>unknown</i>}</p> <p>Amount: {product.amount ? product.amount : <i>unknown</i>}</p>

Μένει να ανοίξουμε το main.jsx και να προσθέσουμε εκεί την εισαγωγή του loader, ας τον ονομάσουμε productLoader:

import Product, { loader as productLoader, } from './routes/product';

Και να τον ορίσουμε ως loader για το αντικείμενο διαδρομής της σελίδας προϊόντος, προσθέτοντάς τον στα children μετά την ιδιότητα element:

children: [ { path: 'products/:productId', element: <Product />, loader: productLoader, }, ],

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

Πάρτε την εφαρμογή που δημιουργήσατε στις ασκήσεις των προηγούμενων μαθημάτων. Χρησιμοποιώντας το υλικό του μαθήματος, υλοποιήστε τον loader, συνδέστε τον, χρησιμοποιήστε τα δεδομένα από αυτόν για τη σελίδα του μαθητή.

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