⊗jsrtPmRtGLDP 36 of 47 menu

Pridobivanje podatkov nalagalnika iz URL parametrov v React Router

V prejšnji lekciji smo napisali funkcijo za pridobivanje podatkov strani izdelka, importajmo getProduct v datoteko product.jsx:

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

Napišimo funkcijo nalagalnika loader takoj po importu in pred funkcijo Product. Podajmo ji URL parametre:

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

Prav tako importajmo kavelj useLoaderData za uporabo podatkov, pridobljenih z nalagalnikom:

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

Uporabimo useLoaderData, s čimer zamenjamo vrstico z ustvarjanjem objekta product na začetku funkcije Product z naslednjo:

const { product } = useLoaderData();

In seveda nekoliko spremenimo našo postavitev, saj smo odstranili stari objekt product. Zamenjajmo vsebino odstavkov:

<p>Ime: {product.name}</p> <p>Cena: {product.cost}</p> <p>Količina: {product.amount}</p>

Z naslednjo:

<p>Ime: {product.name ? product.name : <i>neimenovano</i>}</p> <p>Cena: {product.cost ? product.cost : <i>neznana</i>}</p> <p>Količina: {product.amount ? product.amount : <i>neznana</i>}</p>

Ostane nam še, da odpremo main.jsx in dodamo tja import loader, poimenujmo ga productLoader:

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

In ga navedimo kot nalagalnik za objekt poti strani z izdelkom, dodamo ga v children za lastnostjo element:

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

To je vse, s pridobivanjem podatkov za stran izdelka smo se razrešili! Resda, nimamo še kaj nalagati. Zaženite aplikacijo, dodajte nekaj izdelkov in kliknite nanje v seznamu, da se prepričate, da vse deluje.

Vzemite aplikacijo, ki ste jo ustvarili v nalogah za prejšnje lekcije. Z uporabo gradiva iz lekcije implementirajte loader, povežite ga, uporabite podatke iz njega za stran s študentom.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni