⊗jsrtPmRtGLDP 36 of 47 menu

Įkėlimo duomenų gavimas iš URL parametrų React Router

Ankstesnėje pamokoje parašėme funkciją produkto puslapio duomenų gavimui, importuokime getProduct failą product.jsx:

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

Parašykime įkėlimo funkciją loader iškart po importo ir prieš funkciją Product. Perduokime jai URL parametrus:

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

Taip pat importuokime hook'ą useLoaderData, kad naudotume įkėlimo gautus duomenis:

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

Pritaikykime useLoaderData, atitinkamai pakeisdami eilutę su objekto product sukūrimu funkcijos Product pradžioje šiuo kodu:

const { product } = useLoaderData();

Ir, žinoma, šiek tiek pakeisime savo žymėjimą, nes pašalinome senąjį objekto product. Pakeiskime pastraipų turinį:

<p>Pavadinimas: {product.name}</p> <p>Kaina: {product.cost}</p> <p>Kiekis: {product.amount}</p>

Šiuo kodu:

<p>Pavadinimas: {product.name ? product.name : <i>be pavadinimo</i>}</p> <p>Kaina: {product.cost ? product.cost : <i>nežinoma</i>}</p> <p>Kiekis: {product.amount ? product.amount : <i>nežinoma</i>}</p>

Mums belieka atidaryti main.jsx ir pridėti ten importą loader, pavadinkime jį productLoader:

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

Ir nurodyti jį kaip įkėlimo funkciją produkto puslapio maršruto objektui, pridėdami jį į children po savybės element:

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

Viskas, su duomenų įkėlimu produkto puslapiui susidorojome! Tiesa, kol kas nėra ką įkelti. Paleiskite programėlę, pridėkite produktų ir spustelėkite juos sąraše, kad įsitikintumėte, jog viskas veikia.

Paimkite programėlę, kurią sukūrėte užduotyse ankstesnėse pamokose. Naudodamiesi pamokos medžiaga, įgyvendinkite loader, prijunkite jį, panaudokite iš jo gautus duomenis studento puslapiui.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti