⊗jsrtPmRtDER 38 of 47 menu

Mencipta Laluan untuk Mengedit Data dalam React Router

Dalam pelajaran lepas, kami mencipta borang untuk pengeditan dalam komponen React berasingan EditProduct.

Sekarang mari kita tulis fungsi pemuat untuk laluan baru sejurus selepas import dan sebelum fungsi EditProduct. Ia akan sama seperti dalam product.jsx. Parameter URL akan dipindahkan ke dalam fungsi dan kemudian kami akan mendapatkan produk mengikut id-nya:

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

Import getProduct dari forStorage.js:

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

Sekarang kami akan buka main.jsx dan import komponen EditProduct yang kami cipta dan pemuat:

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

Kemudian tambahkan dalam tatasusunan children objek laluan untuk pengeditan sejurus selepas laluan untuk produk:

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

Sekarang jalankan aplikasi, cipta produk, klik padanya, kemudian pada tombol pengeditan dan kita akan lihat borang kami.

Satu-satunya perkara, kami juga perlu memastikan bahawa data semasa dimuatkan dalam medan borang sebelum pengeditan. Untuk ini, kami import dalam edit.jsx hook useLoaderData:

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

Dan gunakannya untuk mendapatkan data dari pemuat dalam fungsi EditProduct. Tambahkannya sebelum perintah return:

const { product } = useLoaderData();

Sekarang tambahkan dalam setiap tag input atribut defaultValue dengan nilai yang sepadan untuk setiap input. Sebagai contoh, input pertama kini akan kelihatan seperti ini:

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

Untuk dua input yang tinggal, nilai akan masing-masing menjadi 'product.cost' dan 'product.amount'. Walaubagaimanapun, buat masa ini data dalam borang kami masih tiada.

Ambil aplikasi yang anda cipta dalam tugasan untuk pelajaran lepas. Menggunakan bahan pelajaran, cipta fungsi loader dalam edit.jsx untuk laluan mengedit data pelajar.

Tambahkan dalam tatasusunan children objek laluan untuk pengeditan.

Tambahkan untuk fungsi EditStudent anda kod yang diperlukan dalam pelajaran.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak