⊗jsrtPmRtGLDP 36 of 47 menu

Získavanie údajov z načítača podľa URL parametrov v React Router

V predchádzajúcej lekcii sme napísali funkciu pre získanie údajov stránky produktu, importujme getProduct v súbore product.jsx:

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

Napíšme funkciu načítača loader ihneď po importe a pred funkciou Product. Odovzdajme do nej URL parametre:

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

Tiež importujme hook useLoaderData pre použitie údajov získaných načítačom:

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

Aplikujme useLoaderData, zodpovedajúcim spôsobom nahradíme riadok s vytvorením objektu product na začiatku funkcie Product nasledujúcim:

const { product } = useLoaderData();

A, samozrejme, trochu zmeníme našu verziu, pretože sme odstránili starý objekt product. Nahraďme obsah odsekov:

<p>Názov: {product.name}</p> <p>Cena: {product.cost}</p> <p>Množstvo: {product.amount}</p>

Nasledujúcim:

<p>Názov: {product.name ? product.name : <i>nepomenovaný</i>}</p> <p>Cena: {product.cost ? product.cost : <i>neznáma</i>}</p> <p>Množstvo: {product.amount ? product.amount : <i>neznáme</i>}</p>

Zostáva nám otvoriť main.jsx a pridať tam import loader, nazvime ho productLoader:

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

A zapísať ho ako načítač pre objekt trasy stránky s produktom, pridaním do children po vlastnosti element:

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

To je všetko, so načítaním údajov pre stránku produktu sme sa vyrovnali! Pravda, načítavať zatiaľ nemáme čo. Spustite aplikáciu, pridajte produkty a klikajte na ne v zozname, aby ste sa presvedčili, že všetko funguje.

Vezmite aplikáciu vytvorenú vami v úlohách k predchádzajúcim lekciám. Použitím materiálov z lekcie implementujte loader, pripojte ho, použite údaje z neho pre stránku so š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
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť