⊗jsrxPmRDEF 24 of 57 menu

Borang untuk Mengedit Data dalam Redux

Sekarang kita mempunyai reducer untuk mengubah data dalam store. Dalam pelajaran ini, kita akan mencipta borang yang membolehkan kita mengedit data produk.

Mari buka aplikasi produk kita dan cipta fail dalam folder products EditProductForm.jsx. Penciptaan komponen EditProductForm adalah serupa dengan NewProductForm, kecuali beberapa perbezaan yang akan kita tekankan. Oleh itu, salin sepenuhnya kod NewProductForm.jsx dan tampalkannya dalam fail yang dicipta EditProductForm.jsx. Sekarang kita mulakan langkah demi langkah.

Keluarkan import nanoid, di sini kita tidak perlu menjana id. Gantikan import productAdded dengan productUpdated, kerana di sini kita akan menggunakan action untuk mengemaskini, bukan untuk menambah produk.

Seterusnya tukar nama fungsi komponen kita daripada NewProductForm kepada EditProductForm.

Sebelum kita mewujudkan state tempatan dalam fungsi EditProductForm untuk name, desc, price dan amount, mari kita masukkan beberapa baris kod lagi. Seperti yang telah disebut sebelum ini, di sini kita tidak perlu menjana id. Sekarang tugas kita adalah untuk mendapatkannya daripada data produk yang ingin diubah. Kita telah melakukannya semasa mencipta halaman berasingan untuk produk. Jadi, dapatkan id menggunakan hook useParams, dan kemudian cari produk yang kita perlukan, menggunakan hook useSelector (jangan lupa import kedua-dua hook pada permulaan fail):

let params = useParams() const { productId } = params const product = useSelector((state) => state.products.find((product) => product.id === productId) )

Selepas ini, ubah blok dengan pengisytiharan state tempatan. Sekarang kita perlu menetapkan data produk yang diperoleh daripada store sebagai nilai awal. Ini adalah rupa state pertama, ubah suai tiga yang selebihnya sendiri:

const [name, setName] = useState(product.name)

Selepas menetapkan pembolehubah untuk useDispatch mari kita masukkan satu baris kod lagi kali ini untuk hook useNavigate. Kita akan menggunakannya untuk kembali ke halaman produk, apabila pengguna menyimpan perubahan yang dibuat dalam borang:

const navigate = useNavigate()

Juga import hook ini pada permulaan fail:

import { useNavigate, useParams } from 'react-router-dom'

Seterusnya kita mempunyai pengendali untuk medan input. Dan selepas mereka, kita perlu membetulkan fungsi onSaveProductClick. Sekarang di dalamnya, apabila diklik, kita akan menghantar action productUpdated dengan id yang diperoleh dan data yang diubah dalam bentuk objek. Selepas itu, tambahkan navigate kita, untuk pergi ke halaman produk yang telah diubah:

const onSaveProductClick = () => { if (name && desc && price && amount) { dispatch( productUpdated({ id: productId, name, desc, price, amount, }) ); navigate(`/products/${productId}`); } }

Hanya tinggal dalam JSX yang dipulangkan cari baris:

<h2>Add a New Product</h2>

Dan gantikannya dengan:

<h2>Edit Product</h2>

Buka aplikasi pelajar anda. Cipta fail EditStudentForm.jsx mengikut analogi dengan NewStudentForm.jsx. Masukkan perubahan ke dalamnya, seperti yang ditunjukkan 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