⊗jsrtPmRtULD 31 of 47 menu

Wykorzystanie danych uzyskanych przez loader w React Router

W poprzedniej lekcji uzyskaliśmy dane z magazynu za pomocą loader. Aby skorzystać z tych danych, użyjemy hooka useLoaderData. Otwórzmy plik root.jsx i dodajmy hook do importu:

import { Outlet, Link, useLoaderData } from 'react-router-dom';

W funkcji Root będziemy teraz otrzymywać dane do stałej products i pracować już z nią. Jeśli mamy jakieś produkty, to lista się wyświetli, jeśli nie, to wypiszemy w akapicie 'no products here ...'. W tagu nav używamy teraz standardowej pętli do wypisania uzyskanych produktów. Każdy element będzie owinięty w komponent Link i adres będzie każdy swój (o tym porozmawiamy później). Odpowiednio, jeśli produkt nie ma nazwy, to wypisze się 'Unnamed' domyślnie. A zatem, biorąc pod uwagę powyższe, teraz nasz kod dla funkcji Root będzie taki:

function Root() { const { products } = useLoaderData(); return ( <div id="main"> {products.length ? ( <nav> {products.map((product) => ( <Link key={product.id} to={`products/${product.id}`}> {product.name ? product.name : <i>Unnamed</i>} </Link> ))} </nav> ) : ( <p><i>no products here ...</i></p> )} <div id="product"> <Outlet /> </div> </div> ); }

Jeśli teraz uruchomimy ponownie aplikację i wejdziemy na stronę główną, to zobaczymy tylko 'no products here ...', ponieważ żadnych produktów w magazynie jeszcze nie umieściliśmy.

Weź aplikację stworzoną przez Ciebie w zadaniach do poprzednich lekcji. Korzystając z materiałów lekcji, dodaj wyświetlanie uzyskanych z loadera danych ze studentami, jak opisano w lekcji.

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ć