⊗jsrtPmRtADA 34 of 47 menu

Att lägga till data med action-metoden i React Router

I den här lektionen kommer vi att bekanta oss med action-metoden för route-objektet. Denna metod anropas när applikationen skickar en HTTP-förfrågan av typen POST, PUT, PATCH eller DELETE (förutom GET) till din route.

Låt oss först importera funktionen för att skapa en produkt, som vi skrev i förra lektionen, till vår root.jsx:

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

Nu behöver vi skapa en action-funktion som React Router kommer att anropa när användaren klickar på knappen för att lägga till produkt, låt oss placera den efter loader-funktionen:

export async function action() { const product = await createProduct(); return { product }; }

Låt oss öppna main.jsx och importera action:

import Root, { loader as rootLoader, action as rootAction } from './routes/root';

Och sätta den som värde för action-metoden för route-objektet. Komponenten Form kommer att förhindra webbläsaren från att skicka förfrågningar till servern vid knapptryck, utan kommer istället att anropa action-metoden för vår route. Så här intressant fungerar klient-sidans routing med React Router:

const router = createBrowserRouter([ { path: '/', element: <Root />, errorElement: <ErrorPage404 />, loader: rootLoader, action: rootAction, children: [ { path: 'products/:productId', element: <Product />, }, ], }, ]);

Låt oss starta vår applikation. Öppna fliken 'Application' (Application för Chrome) i utvecklarverktygen, klicka på indexedDB bland olika typer av lagring, här är vi intresserade av localforage. Nu när vi klickar på knappen för att lägga till produkter i vår applikation och uppdaterar localforage-lagringen efter klick ser vi hur i keyvaluepairs i arrayen products läggs objekt till med olika id. Seger!!! Det betyder att poster skapas i vår lagring! Naturligtvis uppdateras listan i vår applikation också. Tips: glöm inte att rensa de sparade uppgifterna för den här sidan på fliken 'Storage' i Application efteråt.

Ta applikationen du skapade i uppgifterna till tidigare lektioner. Använd materialet från lektionen för att skapa en funktion action, lägg till den i root-route-objektet som en action-metod.

uzlfrituzhi