⊗jsrtPmRtDER 38 of 47 menu

Skapa en rutt för att redigera data i React Router

I förra lektionen skapade vi ett formulär för redigering i en separat React komponent EditProduct.

Låt oss nu skriva en laddarfunktion för den nya rutten direkt efter importen och före funktionen EditProduct. Den kommer att vara likadan som i product.jsx. I funktionen kommer URL-parametrar att skickas och sedan kommer vi att hämta produkten efter dess id:

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

Importera getProduct från forStorage.js:

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

Och nu öppnar vi vår main.jsx och importerar vår skapade komponent EditProduct och laddaren:

import EditProduct, { loader as editProductLoader } from './routes/edit';

Lägg sedan till i arrayen children ett ruttobjekt för redigering direkt efter rutten för produkten:

children: [ { path: 'products/:productId', element: <Product />, loader: productLoader, }, { path: 'products/:productId/edit', element: <EditProduct />, loader: editProductLoader, }, ],

Starta nu applikationen, skapa en produkt, klicka på den och sedan på redigeringsknappen och se vårt formulär.

Det enda, vi behöver också göra så att i formulärfälten före redigering laddas nuvarande data in. För detta importerar vi i edit.jsx hooken useLoaderData:

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

Och använder den för att få data från laddaren i funktionen EditProduct. Lägg till den före kommandot return:

const { product } = useLoaderData();

Lägg nu till i varje input-tagg attributet defaultValue med motsvarande värden för varje input. Till exempel, den första inputen kommer nu att se ut så här:

<input placeholder="name" type="text" name="name" defaultValue={product.name} />

För de två återstående inputarna kommer värdena att vara respektive 'product.cost' och 'product.amount'. Fast för nu är det inga data i formuläret vi har.

Ta applikationen du skapade i uppgifterna till tidigare lektioner. Använd lektionens material, skapa en funktion loader i edit.jsx för rutten för att redigera studentdata.

Lägg till i arrayen children ett objekt för redigeringsrutten.

Lägg till för din funktion EditStudent den kod som krävs i lektionen.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa