⊗jsrtPmRtGLDP 36 of 47 menu

Получаване на данни от loader чрез URL параметри в React Router

В предишния урок написахме функция за получаване на данни за продуктовата страница, нека импортираме getProduct във файла product.jsx:

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

Нека напишем функцията loader loader веднага след импорта и преди функцията Product. Нека подадем в нея URL параметрите:

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

Също така импортираме хука useLoaderData за използване на данните, получени от loader-а:

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

Нека приложим useLoaderData, като съответно заменим реда със създаването на обекта product в началото на функцията Product със следния:

const { product } = useLoaderData();

И, разбира се, нека променим малко нашия markup, тъй като премахнахме стария обект product. Нека заменим съдържанието на параграфите:

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

На следното:

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

Остава да отворим main.jsx и да добавим там импорт на loader, нека го наречем productLoader:

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

И да го пропишем като loader за обекта на маршрута на продуктовата страница, като го добавим в children след свойството element:

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

Готово, със зареждането на данни за продуктовата страница се справихме! Вярно, зареждане нямаме засега. Пуснете приложението, добавете продукти и кликнете върху тях в списъка, за да се убедите, че всичко работи.

Вземете приложението, създадено от вас в задачите към предишните уроци. Позовавайки се на материалите от урока, имплементирайте loader, свържете го, използвайте данните от него за страницата със студент.

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