⊗jsrtPmRtGLDP 36 of 47 menu

Hämta laddningsdata från URL-parametrar i React Router

I förra lektionen skrev vi en funktion för att hämta data för produktsidan, låt oss importera getProduct i filen product.jsx:

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

Låt oss skriva laddarfunktionen loader direkt efter importen och före funktionen Product. Låt oss skicka URL-parametrarna till den:

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

Importera också hooken useLoaderData för att använda data som erhållits av laddaren:

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

Låt oss använda useLoaderData, och följaktligen ersätta raden med skapandet av objektet product i början av funktionen Product med följande:

const { product } = useLoaderData();

Och, naturligtvis, låt oss ändra vår markup lite, eftersom vi tog bort det gamla objektet product. Låt oss ersätta innehållet i styckena:

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

Med följande:

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

Vi har kvar att öppna main.jsx och lägga till import av loader där, låt oss kalla den productLoader:

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

Och specificera den som laddare för route-objektet för produktsidan, genom att lägga till den i children efter egenskapen element:

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

Klart, vi har löst dataladdningen för produktsidan! Fastän, vi har ingenting att ladda ännu. Starta applikationen, lägg till produkter och klicka på dem i listan för att verifiera att allt fungerar.

Ta applikationen du skapade i uppgifterna till tidigare lektioner. Använd lektionens material, implementera loader, anslut den, använd data från den för sidan med studenten.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa