⊗jsrtPmRtGLDP 36 of 47 menu

Атрыманне дадзеных загрузніка па URL параметрах у React Router

На мінулым уроке мы напісалі функцыю для атрымання дадзеных староначкі прадукту, давайце імпартуем getProduct у файле product.jsx:

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

Напішам функцыю загрузніка loader адразу пасля імпарту і перад функцыяй Product. Перададзім у яе URL параметры:

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

Таксама імпартуем хук useLoaderData для выкарыстання дадзеных, атрыманых загрузнікам:

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

Прымянім useLoaderData, адпаведна замяніўшы радок са стварэннем аб'екта product у пачатку функцыі Product на наступную:

const { product } = useLoaderData();

І, вядома ж, зменім крыху нашу верстку, паколькі мы ўбралі стары аб'ект 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';

І прапісаць яго ў якасці загрузніка для аб'екта маршруту старонкі з прадуктам, дадаўшы яго ў 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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць