⊗jsrtPmRtGLDP 36 of 47 menu

Pobieranie danych ładowania na podstawie parametrów URL w React Router

W poprzedniej lekcji napisaliśmy funkcję do pobierania danych strony produktu, zaimportujmy getProduct w pliku product.jsx:

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

Napiszymy funkcję ładowania loader zaraz po imporcie i przed funkcją Product. Przekażmy do niej parametry URL:

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

Również zaimportujmy hook useLoaderData aby użyć danych uzyskanych przez ładowanie:

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

Zastosujmy useLoaderData, odpowiednio zastępując linię z tworzeniem obiektu product na początku funkcji Product na następującą:

const { product } = useLoaderData();

I, oczywiście, zmienimy trochę nasz szablon, ponieważ usunęliśmy stary obiekt product. Zamieńmy zawartość akapitów:

<p>Nazwa: {product.name}</p> <p>Koszt: {product.cost}</p> <p>Ilość: {product.amount}</p>

Na następujące:

<p>Nazwa: {product.name ? product.name : <i>bez nazwy</i>}</p> <p>Koszt: {product.cost ? product.cost : <i>nieznany</i>}</p> <p>Ilość: {product.amount ? product.amount : <i>nieznana</i>}</p>

Pozostało nam otworzyć main.jsx i dodać tam import loader, nazwijmy go productLoader:

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

I wpisać go jako ładowanie dla obiektu trasy strony z produktem, dodając go do children po właściwości element:

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

To wszystko, z ładowaniem danych dla strony produktu sobie poradziliśmy! Prawda, ładować na razie nie mamy czego. Uruchom aplikację, dodaj kilka produktów i kliknij na nie na liście, żeby się upewnić, że wszystko działa.

Weź aplikację stworzoną przez ciebie w zadaniach do poprzednich lekcji. Korzystając z materiałów lekcji, zaimplementuj loader, podłącz go, wykorzystaj dane z niego dla strony ze studentem.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć