⊗jsrtPmRtULD 31 of 47 menu

Använda data från laddaren i React Router

I föregående lektion hämtade vi data från lagringen med hjälp av loader. För att kunna använda dessa data, använder vi hooken useLoaderData. Låt oss öppna filen root.jsx och lägga till hooken i importen:

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

I funktionen Root kommer vi nu att få data i konstanten products och arbeta med den. Om vi har några produkter kommer listan att visas, om inte, kommer vi att visa i ett stycke 'no products here ...'. I taggen nav använder vi nu en standardloop för att visa de hämtade produkterna. Varje element kommer att vara inslaget i komponenten Link och adressen kommer att vara sin egen för varje (vi kommer att prata om detta senare). Följaktligen, om produkten saknar namn, kommer 'Unnamed' att visas som standard. Så, med hänsyn till ovanstående, kommer vår kod för funktionen Root nu att se ut så här:

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> ); }

Om vi startar om applikationen nu och går till hemsidan, kommer vi att se bara 'no products here ...', eftersom inga produkter har lagts i lagringen ännu.

Ta applikationen som du skapade i uppgifterna till tidigare lektioner. Använd materialet från lektionen och lägg till visning av data som hämtats från laddaren med studenter, enligt beskrivningen i lektionen.

enuznltrid