⊗jsrtPmRtDER 38 of 47 menu

Crearea unei rute pentru editarea datelor în React Router

În lecția precedentă am creat un formular pentru editare într-o componentă React separată EditProduct.

Haideți acum să scriem funcția de încărcare pentru noua rută imediat după importuri și înainte de funcția EditProduct. Ea va fi la fel ca în product.jsx. În funcție vor fi transmiși parametrii URL și apoi vom prelua produsul după id-ul său:

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

Importăm getProduct din forStorage.js:

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

Și acum vom deschide main.jsx-ul nostru și vom importa componenta creată de noi EditProduct și funcția de încărcare:

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

Apoi adăugăm în tabloul children obiectul rutei pentru editare imediat după ruta pentru produs:

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

Acum pornim aplicația, creăm un produs, facem clic pe el, apoi pe butonul de editare și vom vedea formularul nostru.

Singurul lucru, mai trebuie să facem așa, ca în câmpurile formularului înainte de editare să fie încărcate datele curente. Pentru asta importăm în edit.jsx hook-ul useLoaderData:

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

Și îl aplicăm pentru a obține date din funcția de încărcare în funcția EditProduct. Adăugăm înainte de comanda return:

const { product } = useLoaderData();

Acum adăugăm în fiecare tag input atributul defaultValue cu valorile corespunzătoare pentru fiecare input. De exemplu, primul input acum va arăta așa:

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

Pentru celelalte două inputuri valorile vor fi respectiv 'product.cost' și 'product.amount'. Adevărat, deocamdată date în formular nu avem.

Luați aplicația, creată de dumneavoastră în sarcinile din lecțiile trecute. Folosind materialele lecției, creați funcția loader în edit.jsx pentru ruta de editare a datelor studentului.

Adăugați în tabloul children obiectul rutei pentru editare.

Adăugați pentru funcția dumneavoastră EditStudent codul necesar indicat în lecție.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge