⊗jsrxPmRDEF 24 of 57 menu

Adatszerkesztő űrlap a Redux-ban

Most már van egy reducerünk az adatok módosításához a store-ban. Ezen a leckén létrehozunk egy űrlapot, amellyel szerkeszthetjük a termék adatait.

Nyissuk meg a termék alkalmazásunkat és hozzunk létre a products mappában a EditProductForm.jsx fájlt. A EditProductForm komponens létrehozása hasonló lesz a NewProductForm-hoz, néhány eltéréssel, amelyeknél megállunk. Ezért másolja át a teljes kódot a NewProductForm.jsx fájlból és illessze be a létrehozott EditProductForm.jsx fájlba. Most kezdjük sorban.

Távolítsa el az importból a nanoid-ot, itt nem kézzel generálunk id-t. Cserélje le az productAdded importját productUpdated-re, mert itt a frissítéshez szükséges action-t fogjuk használni, nem a hozzáadáshoz szükségest.

Ezután módosítsuk a komponensünk függvényének a nevét NewProductForm-ról EditProductForm-ra.

Mielőtt létrehoznánk a lokális state-eket a EditProductForm függvényben a name, desc, price és amount számára, illesszünk be még néhány sort kódot. Ahogy korábban említettük, itt nem kell id-t generálnunk. Most a feladatunk, hogy a módosítandó termék adataiból szerezzük be azt. Ezt már megtettük a termék külön oldalának létrehozásakor. Tehát, szerezzük meg az id-t a useParams hook segítségével, majd keressük meg a kívánt terméket a useSelector hook használatával (ne felejtsd el importálni mindkét hook-ot a fájl elején):

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

Ezután módosítsuk a lokális state-ek deklarálásával rendelkező blokkot. Most kezdő értéknek a store-ból kapott termék adatait kell beállítanunk. Így fog kinézni az első state, alakítsa át a maradék hármat maga:

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

A useDispatch változó beállítása után illesszünk be még egy sort kódot ezúttal a useNavigate hook számára. Ezt fogjuk használni a visszatéréshez a termék oldalára, amikor a felhasználó elmenti az űrlapban végzett módosításokat:

const navigate = useNavigate()

Importáld ezt a hook-ot is a fájl elején:

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

Ezután jönnek a beviteli mezők kezelői. Ezek után pedig módosítanunk kell a onSaveProductClick függvényt. Most már ebben kattintáskor elküldjük a productUpdated action-t a kapott id-val és a módosított adatokkal objektum formájában. Ezután hozzáadjuk a navigate-ünket az át navigáláshoz a módosított termék oldalára:

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

Már csak a visszaadott JSX-ben kell megtalálnunk a következő sort:

<h2>Add a New Product</h2>

És lecserélni erre:

<h2>Edit Product</h2>

Nyissa meg a diák alkalmazását. Hozzon létre egy EditStudentForm.jsx fájlt a NewStudentForm.jsx fájl mintájára. Végyen benne módosításokat, ahogyan a leckében bemutatásra került.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás