⊗jsrtPmRtDER 38 of 47 menu

Opprettelse av rute for dataredigering i React Router

I forrige leksjon opprettet vi et skjema for redigering i en egen React- komponent EditProduct.

La oss nå skrive en loader-funksjon for den nye ruten rett etter importen og før funksjonen EditProduct. Den vil være den samme som i product.jsx. I funksjonen vil URL-parametere bli sendt og deretter vil vi hente produktet etter dets id:

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

Importer getProduct fra forStorage.js:

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

Og nå skal vi åpne vår main.jsx og importere komponenten vi opprettet EditProduct og loaderen:

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

Deretter legger vi til i arrayet children et ruteobjekt for redigering rett etter ruten for produktet:

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

La oss nå starte applikasjonen, opprette et produkt, klikke på det, og deretter på redigeringsknappen og se skjemaet vårt.

Det eneste, vi trenger også å gjøre så feltene i skjemaet har de nåværende dataene lastet inn før redigering. For dette importerer vi i edit.jsx hooken useLoaderData:

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

Og bruker den for å hente data fra loaderen i funksjonen EditProduct. Legg den til før kommandoen return:

const { product } = useLoaderData();

La oss nå legge til i hver input-tag attributten defaultValue med de tilsvarende verdiene for hver input. For eksempel, den første inputen vil nå se slik ut:

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

For de to gjenværende inputene vil verdiene vare henholdsvis 'product.cost' og 'product.amount'. Men foreløpig har vi ingen data i skjemaet.

Ta applikasjonen du opprettet i oppgavene til de foregående leksjonene. Bruk materialet fra leksjonen, opprett en funksjon loader i edit.jsx for ruten for redigering av studentdata.

Legg til i arrayet children et objekt for redigeringsruten.

Legg til for din funksjon EditStudent den nødvendige koden som kreves i leksjonen.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis