⊗jsrtPmRtDER 38 of 47 menu

Erstellen einer Route zur Datenbearbeitung in React Router

In der letzten Lektion haben wir ein Formular zur Bearbeitung in einer separaten React- Komponente EditProduct erstellt.

Schreiben wir nun die Loader-Funktion für die neue Route, und zwar direkt nach den Importen und vor der Funktion EditProduct. Sie wird genauso aussehen wie in product.jsx. Der Funktion werden URL-Parameter übergeben und anschließend werden wir das Produkt anhand seiner id abrufen:

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

Importieren wir getProduct aus forStorage.js:

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

Jetzt öffnen wir unsere main.jsx und importieren die von uns erstellte Komponente EditProduct und den Loader:

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

Anschließend fügen wir im Array children ein Route-Objekt für die Bearbeitung direkt nach der Produktroute hinzu:

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

Starten wir nun die Anwendung, erstellen wir ein Produkt, klicken wir darauf und dann auf den Bearbeiten-Button. Wir werden unser Formular sehen.

Einzige, wir müssen noch sicherstellen, dass in den Formularfeldern vor der Bearbeitung die aktuellen Daten geladen sind. Dafür importieren wir in edit.jsx den Hook useLoaderData:

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

Und wenden ihn an, um die Daten vom Loader in der Funktion EditProduct zu erhalten. Fügen wir ihn vor dem return-Befehl hinzu:

const { product } = useLoaderData();

Fügen wir nun in jedes Input-Tag das Attribut defaultValue mit den entsprechenden Werten für jede Eingabe hinzu. Zum Beispiel sieht die erste Eingabe jetzt so aus:

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

Für die beiden verbleibenden Eingaben lauten die Werte entsprechend 'product.cost' und 'product.amount'. Allerdings haben wir vorerst noch keine Daten im Formular.

Nehmen Sie die Anwendung, die Sie in den Aufgaben zu den vorherigen Lektionen erstellt haben. Erstellen Sie unter Verwendung des Lehrmaterials die Funktion loader in edit.jsx für die Route zur Bearbeitung der Studentendaten.

Fügen Sie im Array children ein Objekt der Route für die Bearbeitung hinzu.

Fügen Sie für Ihre Funktion EditStudent den im Unterricht geforderten Code hinzu.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen