Načítání dat pro trasu v React Router

V minulé lekci jsme extrahovali data produktů z úložiště. Nyní je třeba tato data načíst do elementu trasy. K tomu se používá funkce načítání (loader). Nyní ji vytvoříme.

Otevřeme root.jsx, přidáme sem řádek importu getProducts z forStorage.js:

routes/root.jsximport { getProducts } from '../forStorage'

Ihned po řádcích importu a před funkcí Root napíšeme kód funkce loader, která přes getProducts bude vracet data s produkty z úložiště. Obecně by se takové funkce měly psát v samostatném souboru, ale my trochu zlenošíme, takže nevěnujte pozornost varování:

routes/root.jsxexport async function loader() {
  const products = await getProducts();
  return { products };
}

Nyní přidejme import našeho načítání do main.jsx. Toto načítání bude pro kořen, proto jej nazveme rootLoader:

main.jsximport Root, { loader as rootLoader } from './routes/root';

A přidejme jej do našeho objektu trasy do vlastnosti loader:

main.jsxconst router = createBrowserRouter([
  {
    path: '/',
    element: <Root />,
    errorElement: <ErrorPage404 />,
    loader: rootLoader,
    children: [
      {
        path: 'products/:productId',
        element: <Product />,
      },
    ],
  },
]);
Задание 1

Vezměte aplikaci, kterou jste vytvořili v úkolech k minulým lekcím. Použijte materiály lekce a napište v souboru root.jsx funkci loader pro načítání dat studentů a přidejte ji do objektu trasy v main.jsx.