⊗jsrtPmRtGLDP 36 of 47 menu

Recupero dei dati del loader tramite parametri URL in React Router

Nella lezione precedente abbiamo scritto una funzione per recuperare i dati della pagina del prodotto, importiamo getProduct nel file product.jsx:

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

Scriviamo la funzione del loader loader subito dopo l'import e prima della funzione Product. Passiamole i parametri URL:

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

Importiamo anche l'hook useLoaderData per utilizzare i dati ottenuti dal loader:

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

Applichiamo useLoaderData, sostituendo di conseguenza la riga con la creazione dell'oggetto product all'inizio della funzione Product con la seguente:

const { product } = useLoaderData();

E, naturalmente, modificheremo leggermente il nostro markup, poiché abbiamo rimosso il vecchio oggetto product. Sostituiamo il contenuto dei paragrafi:

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

Con il seguente:

<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>

Ci resta di aprire main.jsx e aggiungere l'import di loader, chiamiamolo productLoader:

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

E specificarlo come loader per l'oggetto della route della pagina del prodotto, aggiungendolo in children dopo la proprietà element:

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

Tutto fatto, abbiamo sistemato il caricamento dei dati per la pagina del prodotto! Però, non abbiamo ancora niente da caricare. Avvia l'applicazione, aggiungi alcuni prodotti e clicca su di essi nella lista per assicurarti che tutto funzioni.

Prendi l'applicazione che hai creato nei compiti delle lezioni precedenti. Utilizzando il materiale della lezione, implementa il loader, collegalo, utilizza i dati da esso per la 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