⊗jsrxPmRDEF 24 of 57 menu

Vorm vir die Redigering van Data in Redux

Nou het ons 'n reducer om data in die store te verander. In hierdie les sal ons 'n vorm skep waardeur ons produkdata kan redigeer.

Kom ons maak ons produkaansoeking oop en skep die lêer EditProductForm.jsx in die gids products. Die skep van die komponent EditProductForm sal soortgelyk wees aan NewProductForm, met die uitsondering van 'n paar verskille waarop ons sal fokus. Daarom, kopieer die volledige kode van NewProductForm.jsx en plak dit in die geskepte lêer EditProductForm.jsx. Laat ons nou begin.

Verwyder die invoer van nanoid, hier het ons nie die id nodig om te genereer nie. Vervang die invoer van productAdded met productUpdated, want hier sal ons die aksie gebruik vir opdatering, nie vir byvoeging van 'n produk nie.

Verder verander ons die naam van ons funksie komponent van NewProductForm na EditProductForm.

Voordat ons plaaslike state in die funksie EditProductForm skep vir name, desc, price en amount, laat ons nog 'n paar reëls kode invoeg. Soos ons vroeër genoem het, hier het ons nie die id nodig om te genereer nie. Nou is ons taak om dit uit die data van die produk wat verander moet word te kry. Ons het dit reeds gedoen toe ons die aparte bladsy vir die produk geskep het. Dus, kry die id deur die haak useParams te gebruik, en vind dan die produk wat ons nodig het, deur die haak useSelector te gebruik (moenie beide hakke aan die begin van die lêer invoer nie):

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

Daarna verander ons die blok met die verklaring van plaaslike state. Nou moet ons as aanvanklike waarde die data van die produk wat uit die store verkry is, instel. Hier is hoe die eerste state sal lyk, verander die drie oorblywende self:

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

Nadat ons die veranderlike vir useDispatch toegeken het, laat ons nog 'n reël kode byvoeg, hierdie keer vir die haak useNavigate. Ons sal dit gebruik om terug te keer na die bladsy met die produk wanneer die gebruiker die veranderinge in die vorm stoor:

const navigate = useNavigate()

Voer ook hierdie haak aan die begin van die lêer in:

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

Dan het ons die hanterders vir die invoervelde. En daarna moet ons die funksie onSaveProductClick aanpas. Nou sal ons daarin met 'n klik die aksie productUpdated stuur met die verkry id en veranderde data in die vorm van 'n objek. Daarna voeg ons ons navigate by, om oor te gaan na die bladsy van die veranderde produk:

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

Nou moet ons net in ons terugkerende opmaak die reël vind:

<h2>Add a New Product</h2>

En dit vervang met:

<h2>Edit Product</h2>

Maak jou aansoeking met studente oop. Skep die lêer EditStudentForm.jsx op soortgelyke wyse as NewStudentForm.jsx. Voer die veranderinge daarin in, soos in die les gewys.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικά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
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp